Java面向对象编程(3-3).ppt

Java面向对象编程(3-3).ppt

ID:51488762

大小:150.00 KB

页数:33页

时间:2020-03-24

Java面向对象编程(3-3).ppt_第1页
Java面向对象编程(3-3).ppt_第2页
Java面向对象编程(3-3).ppt_第3页
Java面向对象编程(3-3).ppt_第4页
Java面向对象编程(3-3).ppt_第5页
资源描述:

《Java面向对象编程(3-3).ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、第三章 面向对象编程3软件工程学院主讲人:张昊13.8多态什么是多态JAVA里没有多继承,一个类只能有一个父类。一个父类可以有多个子类,而在子类里可以重写父类的方法,每个子类里重写的代码不一样。这样用父类的变量去引用子类的实例,在调用相同的方法时得到的结果不一样,这就是多态,也就是调用相同的方法会有不同的结果。2Java语言允许用父类的变量去引用子类的实例。Animalxiaohuang=newDog();//父类变量animal引用一个Animal子类Dog的实例我们称Animal是xiaohuang的声

2、明(形式)类型Dog是xiaohuang的实际类型。Animalxiaohua=newCat();//父类变量xiaohua引用另一个Animal子类Cat的实例用父类的变量去引用子类的实例3例1:publicclassFather{//父类publicvoidhitChild(){//父类有一个打孩子方法} } publicclassSon1extendsFather{//子类1//重写父类打孩子方法publicvoidhitChild(){System.out.println("为什么打我?我做错什么了

3、!");} } publicclassSon2extendsFather{//子类2//重写父类打孩子方法publicvoidhitChild(){System.out.println("我知道错了,别打了!");} } publicclassSon3extendsFather{//子类3//重写父类打孩子方法publicvoidhitChild(){System.out.println("我跑,你打不着!");} }4例1://测试类publicclassTest{    publicstaticvoid

4、main(Stringargs[]){Fatherfather;father=newSon1();father.hitChild();father=newSon2();father.hitChild();father=newSon3();father.hitChild();} }都调用了相同的方法,出现了不同的结果!这就是多态的表现!5【3.12】ClassSuperClass{voidmethod1(){System.out.println(“method1inSuperClass”);}voidmeth

5、od2(){System.out.println(“method2inSuperClass”);}}classSubClassextendsSuperClass{voidmethod1(){System.out.println(“method1inSubClass”);}voidmethod3(){System.out.println(“method3inSubClass”);}}6classMain{publicstaticvoidmain(Stringargs[]){SuperClassa=newSub

6、Class();//声明类型为SuperClass,实际类型是SubClassa.method1();//method1inSubClass,SubClass对SuperClass中的method1进行了重写a.method2();//method2inSuperClass,SubClass中没有method2,只能调用SuperClass的method2//a.method3();错误}}7如果我们调用a的method3()方法,则无法通过编译。这是因为java语言为强制类型的语言,编译时会检查形式类型是

7、否提供该方法。a的形式类型是SuperClass,不提供method3()方法,虽然a的实际类型有method3()方法,但编译时只检查形式类型,不检查实际类型。所以形式类型也称为编译期类型,实际类型也称为执行期类型。注意:8注意:通常我们不会去写“SuperClassa=newSubClass();”但实际应用中,形式类型和实际类型不同的情况却往往在不知不觉中发生。看下例:9【例3.13】classOther{staticvoidmethod4(SuperClassa){//a的形式类型是SuperCla

8、ss,实际类型则不一定是SuperClassa.method1();}}publicclassMain{publicstaticvoidmain(String[]args){SubClassb=newSubClass();Other.method4(b);//相当于SuperClassa=newSubClass();}/*调用类方法method4(),需要一个SuperClass类型的参数,而传入的参数b的实际类

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。