资源描述:
《java大学实用教程(第二版)附课后练习答案第5章继承、接口与泛型.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第5章继承、接口与泛型本章导读1.子类与父类2.子类的继承性3.子类对象的构造过程4.成员变量隐藏和方法的重写5.super关键字6.final类与final方法7.对象的上转型对象第5章继承、接口与泛型8.继承与多态9.使用abstract类10.接口11.接口回调12.内部类13.匿名类14.异常类15.泛型类5.1子类与父类上一章我们主要学习了类和对象的有关知识,讨论了类的构成以及用类创建对象等主要问题,本章的主要介绍类的继承、和继承有关的多态性以及接口等重要概念。本章还初步介绍了SDK1.5新推出的泛型。子类与父类继承是一种由已有的类创建新类的机制。利用继承,我们可以先创建一个共有属
2、性的一般类,根据该一般类再创建具有特殊属性的新类,新类继承一般类的状态和行为,并根据需要增加它自己的新的状态和行为。由继承而得到的类称为子类,被继承的类称为父类(超类)。5.1子类与父类父类可以是自己编写的类也可以是java类库中的类。利用继承有利于实现代码的重复使用,子类只需要添加新的功能代码即可。Java不支持多重继承,即子类只能有一个父类。使用关键字extends来声明一个类是另外一个类的子类,格式如下:class子类名extends父类名{…..}返回5.2子类的继承性1.继承的定义所谓类继承就是子类继承父类的成员变量和方法作为自己的成员变量和方法,就好象它们是在子类中直接声明一样。当
3、然,子类能否继承父类的变量和方法还有一定的限制。下面对其进行详细介绍。2.子类和父类在同一包中的继承性如果子类和父类在同一个包中,那么子类自然地继承了其父类中不是private的成员变量作为自己的成员变量,并且也自然地继承了父类中不是private的方法作为自己的方法。继承的成员变量以及方法的访问权限保持不变。classFather{privateintmoneyDollar=300;intmoneyHK=200;intadd(intx,inty){returnx+y;}}classSonextendsFather{intmoneyRMB=800;publicvoidchangMoneyHK(
4、intx){moneyHK=x;}publicvoidchangMoneyRMB(intx){moneyRMB=x;}intsubs(intx,inty){returnx-y;}}classGrandSonextendsSon{intmulti(intx,inty){returnx*y;}}publicclassExample5_1{publicstaticvoidmain(Stringargs[]){inta=5,b=3;Sonson=newSon();GrandSonsunzi=newGrandSon();son.changMoneyHK(666);son.changMoneyRMB(50
5、00);System.out.println("儿子的港币是继承的属性,当前的值是:"+son.moneyHK);System.out.println("儿子的人民币是新增的属性,当前的值是:"+son.moneyRMB);System.out.printf("减法是儿子新增的功能,%d-%d等于%d",a,b,son.subs(a,b));System.out.printf("加法是儿子继承的功能,%d+%d等于%d",a,b,son.add(a,b));System.out.println("孙子的港币和人民币都是继承的属性,,当前的值是:");System.out.println
6、("港币:"+sunzi.moneyHK+"人民币:"+sunzi.moneyRMB);System.out.printf("乘法是孙子新增的功能,%d*%d等于%d",a,b,sunzi.multi(a,b));System.out.printf("加法是孙子继承的功能,%d+%d等于%d",a,b,sunzi.add(a,b));System.out.printf("减法是孙子继承的功能,%d-%d等于%d",a,b,sunzi.subs(a,b));}}5.2子类的继承性下面我们看一个例子。程序的运行结果见下图5.2子类的继承性3.子类和父类不在同一包中的继承性如果子类和父类
7、不在同一个包中,那么子类只能继承父类的protected、public成员变量和方法,继承的成员或方法的访问权限不变。如果子类和父类不在同一个包里,子类不能继承父类的友好变量和友好方法。返回5.3子类对象的构造过程当用子类的构造方法创建一个子类的对象时,子类的构造方法总是先调用父类的某个构造方法,如果子类的构造方法没有指明使用父类的哪个构造方法,子类就调用父类的不带参数的构造方法。因此,我们可以这