1 / 44
文档名称:

java第9章继承、多肽与接口.ppt

格式:ppt   页数:44页
下载后只包含 1 个 PPT 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

java第9章继承、多肽与接口.ppt

上传人:ranfand 2016/5/29 文件大小:0 KB

下载得到文件列表

java第9章继承、多肽与接口.ppt

相关文档

文档介绍

文档介绍:第9章继承、多态与接口 1 本章学习重点: ?继承与多态的概念?继承与多态的实现机制?抽象类和接口 2 继承与多态?当一个类拥有另一个类的数据和操作时,就称这两个类之间具有继承关系,被继承的类称为父类或超类,继承的类称为子类。?一个父类可以同时拥有多个子类,该父类实际上是所有子类的公共成员变量和公共方法的集合,而子类是父类的特殊化,可对公共成员变量和方法在功能、内涵方面加以扩展和延伸。 3 ?面向对象的继承特性中,还有一个关于单继承和多继承的概念。–单继承是指任何类都只有一个父类。–多继承是指一个类可以有一个以上的父类,它静态数据和操作从所有这些父类中继承的。? Java 只支持单重继承,但支持界面,一个类可以实现多个界面。利用界面可以得到多继承的优点,又没有多继承混乱、复杂的问题。 4 Java 继承:创建子类? Java 中的继承是通过 extends 关键字来实现的。格式为: class 子类名 extends 父类名称{……} ?在定义类时用 extends 关键字指明新定义类的父类,就在两个类之间建立了继承关系,新定义的类被称为子类。–如果子类和父类在同一个包中,它可以从父类那里继承所有非 private 的成员变量和方法作为自己的成员。–如果子类和父类不在同一个包中,它可以从父类那里继承 protected 、 public 的的成员变量和方法作为自己的成员. 5 【例】应用继承性的实例。 class Student{ //自定义“学生”类 int stu_id; //定义属性:学生学号 void set_id(int id){ //定义方法:设置学号 stu_id=id; } void show_id(){ //定义方法:显示学号 ("the student ID is:"+stu_id); } } class UniversityStudent extends Student{ //定义子类 int dep_number; //定义子类特有的属性变量 void set_dep(int dep_num){ //定义子类特有的方法 dep_number=dep_num; } void show_dep( ){ ("the dep_number is:"+dep_number); } public static void main(String args[]){ UniversityStudent Lee=new UniversityStudent(); (2007070130); // 继承父类学生的属性 (701); //使用本类的属性 (); //继承父类学生的方法 (); //使用本类的方法} } 6 成员变量的隐藏和方法的覆盖? –子类可以继承父类的所有非私有成员变量。? –子类重新定义一个从父类那里继承来的成员变量变量完全相同的变量,称为成员变量的隐藏。? –方法的覆盖是指子类重定义从父类继承来的一个同名方法, 此时子类将清除父类方法的影响。–注意:子类在重新定义父类已有的方法时,应保持与父类完全相同的方法头声明,即应与父类有完全相同的方法名、相同的参数表和相同的返回类型。 7 【例】成员变量的隐藏和方法的覆盖示例。 class SuperClass{ int x; …… void setX( ){ x=0 ; }……} class SubClass extends SuperClass{ int x ; //成员变量的隐藏…… void setX( ){ // 方法的覆盖 x=5 ; }……}8 ?方法的覆盖与成员变量的隐藏的区别为: –子类隐藏父类的成员变量只是使之不可见,父类的同名成员变量在子类对象中仍然占有自己独立的内存空间; –而子类方法对父类同名方法的覆盖将清除父类方法占用的内存,从而使父类方法在子类对象中不存在。?方法的覆盖与成员变量的隐藏的意义:将父类行为和状态改为自身的行为和状态,对外仍保持统一的接口和名字,不失继承性。 9 super ?子类对父类的同名成员变量和方法,分别实行隐藏和覆盖。但是,有时需要在子类中访问父类的变量、父类的方法, Java 提供的 super 就可以实现这访问。它的使用有三种情况: –访问被隐藏的父类成员变量,如: –调用父类中被覆盖的方法,如: –调用父类中的构造方法,如: super([paramLis