面向对象高级特性(下)

面向对象高级特性(下)

ID:42322798

大小:255.51 KB

页数:28页

时间:2019-09-12

面向对象高级特性(下)_第1页
面向对象高级特性(下)_第2页
面向对象高级特性(下)_第3页
面向对象高级特性(下)_第4页
面向对象高级特性(下)_第5页
资源描述:

《面向对象高级特性(下)》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第六讲面向对象高级特性(下)主要内容引用类型转换动态绑定抽象类接口内部类引用类型转换子类对象可以当成父类对象使用(父类的引用类型变量可以指向子类的对象)不能通过父类的引用访问子类对象新增加的成员父类引用只有经过强制转换后才能赋值给子类引用变量语句“引用变量名instanceof类名”作用:判断该引用类型变量所指向的“对象”是否属于该类引用类型转换【例1】请分析下面代码的输出结果,理解引用类型转换的规则。引用类型转换【例2】请阅读下面代码,理解引用类型转换能够给程序带来较好的扩展性。动态绑定动态绑定是一种调用对象

2、方法的机制,指的是在运行期间,虚拟机将调用对象实际类型所对应的方法。动态绑定三个必要条件:1)继承2)重写3)父类引用指向子类对象动态绑定【例1】分析下面代码的输出结果。动态绑定【例2】分析下面代码的输出结果。抽象类1.抽象方法:不含有任何方法体的方法。抽象方法必须用abstract关键字进行定义。例如,publicabstractintfunc1(inta,intb);2.抽象类:包含抽象方法的类。抽象类也必须用abstract关键字进行定义。例如,abstractclasstest1{publicabstr

3、actintfunc1(inta,intb);}抽象类3.抽象类中,可以包含抽象方法和非抽象方法。例如,abstractclasstest1{abstractintf(inta,intb);//抽象方法voidfunc2(){}//非抽象方法}抽象类4、抽象类不能被实例化。5、抽象类能够被继承。只有当子类实现了父类的所有抽象方法,该子类才能够被实例化。否则,它还是一个抽象类。抽象类【例题】设计一个类层次,定义一个抽象类--形状,其中包括求形状的面积的方法。继承该类定义矩形、圆。分别创建一个矩形、圆存入一个数组中

4、,将数组中各类图形的面积输出。接口1.什么是接口?接口是抽象方法和常量的集合。定义一个接口使用interface关键字。例如,interfaceRunner{intID=1;//常量voidrun();//抽象方法}接口2.接口的特性接口中的方法默认具有public和abstract属性;接口中的变量默认具有public、static、final属性。3.使用extends关键字定义一个新的接口。接口4.使用implements关键字定义一个类,实现接口中的所有抽象方法。例如,classFishimplemen

5、tsAnimal{publicvoidrun(){//方法前必须有publicSystem.out.println("Fishisswimming");}publicvoidbreathe(){System.out.println("Fishisbudding");}}接口5.如果类中只实现了接口中的部分方法,那么这个类必须定义为抽象类。6.一个类在继承父类的同时,还可以实现一个或多个接口。接口【例题】一个类可以实现多个接口,从而达到多继承。接口【例题】下面代码使用接口实现了银行账户的存取款。接口【例题】模拟银

6、行之间的转账。接口【例题】接口和实现它的类之间存在着多态性。Java语言允许在类的内部再定义类,这种类称为内部类。包含内部类的类称为外部类。内部类具有成员变量和成员方法。通过建立内部类的对象,可以存取其成员变量和调用其成员方法。内部类的类名只能定义在它的类或语句块之内,在外部引用时必须给出完整的名称。内部类的类名不能与包含它的外部类名相同。内部类1.成员内部类方法能够直接访问外部类成员。【例题】classOuter{intouter_i=10;voidtest(){Innerin=newInner();}voi

7、dtest1(){}classInner{voiddisplay(){System.out.println("outer_i="+outer_i);test1();//直接访问外部类成员}}publicstaticvoidmain(String[]args){Outerouter=newOuter();outer.test();}}成员内部类成员内部类2.外部类方法不能直接访问成员内部类的成员。3.成员内部类中不能定义static成员。4.成员内部类对象的创建方式:(1)在外部类方法中,直接创建(2)在main

8、方法中,通过外部类对象创建内部类对象Outer.Innerin2=outer.newInner();Outer.Innerin1=newOuter().newInner();静态内部类1.静态内部类不能直接访问外部类的非静态成员2.静态内部类可以直接访问外部类的静态成员3.静态内部类可以定义静态成员4.如果静态内部类与main函数位于同一个类中,那么静态内部类可以直接在main函数中创

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

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

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