欢迎来到天天文库
浏览记录
ID:45055721
大小:380.00 KB
页数:96页
时间:2019-11-08
《java继承、接口与泛型》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第5章继承、接口与泛型1.子类与父类的定义2.子类的继承权限3.子类对象的构造过程4.复用和多态性5.抽象类、接口6内部类和匿名类5.1子类与父类父类可以是自己编写的类也可以是java类库中的类。利用继承有利于实现代码的重复使用,子类只需要添加新的功能代码即可。Java不支持多重继承,即子类只能有一个父类。使用关键字extends来声明一个类是另外一个类的子类,格式如下:class子类名extends父类名{…..}返回5.2子类的继承性父类与子类在同一个文件父类与子类在同一个包父类与子类在同不同包无允许允许不允许private不允许不允许
2、不允许protected允许允许允许public允许允许允许5.3子类对象的构造过程1)父类和子类的构造方法哪个先执行?2)父类多个的构造函数中那个被执行?2)如何指定执行父类某个特定的构造函数?3)子类可以访问父类的私有成员吗?5.3子类对象的构造过程子类对象内存示意图如下图子类未继承的成员子类未继承的成员引用子类对象子类继承的成员子类继承的成员子类声明的成员子类声明的成员5.4成员变量的隐藏和方法的重写1.成员变量的隐藏(覆盖)classA{privateintx=10;voidh(){System.out.println("x="+x
3、);}}classBextendsA{privatedoublex=1.1;voidg(){floatz=x+100;System.out.printf("z=%f",z);}}publicclassExample4{publicstaticvoidmain(Stringargs[]){Bb=newB();b.g();//调用子类自己声明的方法。b.h();}}5.4成员变量的隐藏和方法的重写2.方法重写1)子类中定义一个方法,并且这个方法的名字、返回类型、参数个数和类型与从父类继承的方法完全相同。2)子类通过方法的重写可以把父类的状态
4、和行为改变为自身的状态和行为。3)如果子类还想使用被隐藏的方法,必须使用关键字super。5.4成员变量的隐藏和方法的重写3.访问修饰符protected的进一步说明(a)子类D的protected成员变量和方法,如果不是从父类继承来的,object访问这些protected成员变量和方法时,只要E类和D类在同一个包中就可以了。(b)如果子类D的对象的protected成员变量或protected方法是从父类继承的,那么就要一直追溯到该protected成员变量或方法的“祖先”类,即A类,如果E类和A类在同一个包中,object对象能访问继
5、承的protected变量和protected方法。返回5.5Super关键字Super关键字有两种用法:一种用法是子类使用super调用父类的构造方法另一种用法是子类使用super调用被子类隐藏的成员变量和方法。5.6final类和final方法final类不能被继承,即不能有子类,如:finalclassA{…}将一个类声明为final类一般是由于安全性考虑。因为一旦一个方法被修饰为final方法,则这个方法不能被重写,即不允许子类通过重写隐藏继承的final方法。返回5.7对象的上转型对象那么就称对象a是子类对象b的上转型对象,对象的
6、上转型对象的实体是子类负责创建的,但上转型对象会失去原对象的一些属性和功能。上转型对象具有如下特点(见下图所示)。对象对象的上转型对象继承或隐藏的成员变量继承或重写的方法新增的变量新增的方法5.7对象的上转型对象(1)上转型对象不能操作子类声明定义的成员变量;也不能使用子类声明定义的方法。(2)上转型对象可以操作子类继承的成员变量和隐藏的成员变量,也可以使用子类继承的或重写的方法。(3)上转型对象不能操作子类新增的方法和成员变量(4)可以将对象的上转型对象再强制转换到一个子类对象,这时,该子类对象又具备了子类所有属性和功能5.8继承与多态当
7、一个类有很多子类时,并且这些子类都重写了父类中的某个方法。当我们把子类创建的对象的引用放到一个父类的对象中时,就得到了该对象的一个上转型对象,那么这个上转型对象在调用这个方法时就可能具有多种形态。5.9使用abstract类用关键字abstract修饰类称为abstract类(抽象类)。如:abstractclassA{……}1)abstract类不能用new运算符创建对象,必须产生其子类,由子类创建对象。2)若abstract类的类体中有abstract方法,只允许声明,而不允许实现,而该类的子类必须实现abstract方法,即重写父类的
8、abstract方法。3)一个abstract类只关心子类是否具有某种功能5.9使用abstract类现在让我们来分析一下上面的例子,在这个例子中,我们用到了abstract类和
此文档下载收益归作者所有