欢迎来到天天文库
浏览记录
ID:48793821
大小:345.00 KB
页数:68页
时间:2020-01-25
《Java第5章继承与多态2.ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、第5章继承与多态一、继承性与多态性的实现技术类是用来描述具有相同属性和行为对象集合的工具。任何一个类别的对象都不是独立存在于客观世界上的,因此类与类之间必定存在着某些关系,概括起来有下列三种:关联关系聚合关系泛化关系关联关系关联是指两个或多个类之间的一种特定关系,它描述了各个类对象之间相互依赖的关系。最常见的关联是两个类之间的关联,即二元关联。学生课程目录文件选修存放5~200*1*在Java程序中,常用成员对象实现。聚合关系顾名思义,聚合是将多个类聚集在一起的意思。聚合的方式有如下几种:包含关系(hasa)组成关系(partof)所属关系(owns)雇佣关系(employed_b
2、y)公司雇员*1在Java程序中用成员对象实现集合关系。泛化关系泛化描述了两个类之间的“一般-特殊”关系。可以使用“Isa”进行检测。人学生大学生中学生泛化关系体现了类之间的继承关系。在Java程序中,用定义子类实现。继承机制是实现软件可重用的基石,是提高软件系统的可扩展性和可维护性的主要途径。所谓继承是指一个类的定义可以基于另外一个已经存在的类,即子类基于父类,从而实现父类代码的重用。在Java语言中,通过定义子类支持继承性。多态性是面向对象程序设计的一个核心概念,它有助于增加软件系统的可扩展性、自然性和可维护性。所谓多态是指不同的类对象收到同一个消息可以产生完全不同的响应效果的
3、现象。利用多态机制,用户可以发送一个通用的消息给各个类对象,而实现细节由接收对象自行决定,这样,同一个消息可能会导致调用不同的方法。在Java语言中,主要利用子类覆盖父类的成员方法的方式支持多态性。二、类的继承在Java中,类是一个层次结构,其中有一个被称为Object的特殊超类,所有的类都是Object直接或间接的子类。子类继承父类的数据成员和成员方法,同时也可以更改父类的数据成员或重载父类的成员方法,以及在父类的基础上添加新的数据成员和成员方法。因此,父类和子类之间反映的是“一般与特殊”的关系应用继承的主要场合反映类之间的泛化,即“一般-特殊”关系学生大学生中学生draw()d
4、raw(){…}draw(){…}圆形矩形统一同类操作的接口子类的定义格式[修饰符]子类名称extends父类名称{子类体;}《注意》没有extends,默认父类为Object只能有一个父类,即单继承子类继承父类中除private部分的全部内容类继承具有传递性classB{intb1=1;publicintb2=2;protectedintb3=3;privateintb4=4;intgetb4(){returnb4;}}classAextendsB{inta=5;intsum(){returnb1+b2+b3+getb4()+a;}}b1b2b3b4agetb4()Sum()A类
5、对象包含的成员classClassInheritance{publicstaticvoidmain(Stringargs[]){Bbb=newB();System.out.println("B:"+bb.b1+""+bb.b2+""+bb.b3+""+bb.getb4());Aaa=newA();System.out.println("A:"+aa.b1+""+aa.b2+""+aa.b3+""+aa.getb4()+""+aa.a+""+aa.sum());}}假设ClassInheritance类与A、B类在同一个包中。classB{intb1=1;publicintb2=2;
6、protectedintb3=3;privateintb4=4;intgetb4(){returnb4;}voidsetb4(inti){b4=i;}}classAextendsB{inta=5;}classCextendsA{intc=6;voidchange(intincrease){b1+=increase;b2+=increase;b3+=increase;setb4(getb4()+increase);a+=increase;c+=increase;}}继承的传递性classCPP{publicstaticvoidmain(Stringarg[]){Ccc=newC();
7、System.out.println("C:"+cc.b1+""+cc.b2+""+cc.b3+""+cc.getb4()+""+cc.a+""+cc.c);cc.change(15);System.out.println("C:"+cc.b1+""+cc.b2+""+cc.b3+""+cc.getb4()+""+cc.a+""+cc.c);}}假设CPP类与A、B、C类在同一个包中。子类与父类的属性与方法子类继承父类中除private部分的所有内容;子类中新增加的属
此文档下载收益归作者所有