Java程序设计教学做一体化教程第5章继承与接口参考PPT

上传人:日度 文档编号:149526857 上传时间:2020-10-27 格式:PPT 页数:53 大小:455KB
返回 下载 相关 举报
Java程序设计教学做一体化教程第5章继承与接口参考PPT_第1页
第1页 / 共53页
Java程序设计教学做一体化教程第5章继承与接口参考PPT_第2页
第2页 / 共53页
Java程序设计教学做一体化教程第5章继承与接口参考PPT_第3页
第3页 / 共53页
Java程序设计教学做一体化教程第5章继承与接口参考PPT_第4页
第4页 / 共53页
Java程序设计教学做一体化教程第5章继承与接口参考PPT_第5页
第5页 / 共53页
点击查看更多>>
资源描述

《Java程序设计教学做一体化教程第5章继承与接口参考PPT》由会员分享,可在线阅读,更多相关《Java程序设计教学做一体化教程第5章继承与接口参考PPT(53页珍藏版)》请在金锄头文库上搜索。

1、1 页,注意:开始用功了!,2 页,配合例子源代码一起使用,Power point 制作:耿祥义 张跃平,继承与接口,Java程序设计教学做一体化教程 第5章,3 页,主要内容,4 页,5.1 子类 5.1.1核心知识,1子类的定义 在类的声明中,通过使用关键字extends来定义一个类的子类,格式如下: class 子类名 extends 父类名 例如: class Student extends People 把Student类定义为People类的子类、People类是Student类的父类(超类)。 2子类的继承性 如果子类与父类在同一个包中,那么,子类自然地继承了父类中不是priva

2、te的成员变量作为自己的成员变量,并且也自然地继承了父类中不是private的方法作为自己的方法,继承的成员变量或方法的访问权限保持不变。 当子类与父类不在同一个包中时,子类只继承父类中的protected和public访问权限的成员变量作为子类的成员变量;同样,子类只继承父类中的protected和public访问权限的方法作为子类的方法。,5 页,5.1.2 能力目标,能定义子类,并知道子类的那些成员变量或方法是从父类继承下来的。,6 页,5.1.3 任务驱动,将下列Application.5_1java中的【代码】替换为程序代码。 People.java Student.java Uni

3、verStudent.java Application5_1.java 程序运行效果如图5.1。,7 页,任务小结,(1)继承是一种由已有的类创建新类的机制。可以先定义一个共有属性的一般类,根据该一般类再定义具有特殊属性的子类,子类继承一般类的属性和行为,并根据需要增加它自己的新的属性和行为,子类可以让程序不必一切“从头做起”。 (2) instanceof运算符是Java独有的双目运算符,其左面的操作元是对象,右面的操作元是类,当左面的操作元是右面的类或其子类所创建的对象时,instanceof运算的结果是true,否则是false。,(3)如果一个类是另一个类的子类,那么UML通过使用一个

4、实线连接两个类的UML图来表示二者之间的继承关系,实线的起始端是子类的UML图,终点端是父类的UML图,但终点端使用一个空心的三角形表示实线的结束,如图5.2。,8 页,5.1.4 实践环节,Application5_2.java,9 页,5.2 成员变量的隐藏和方法重写 5.2.1 核心知识,1隐藏成员变量 如果子类声明的成员的变量的名字和从父类继承下来的成员变量的名字相同(声明的类型可以不同),在这种情况下,子类就会隐藏掉所继承的成员变量。 子类一旦隐藏了继承的成员变量,那么子类对象以及子类自己定义的方法操作与父类同名的成员变量时,就是操作子类重新声明的这个成员变量。 2方法重写(Over

5、ride) 如果子类可以继承父类的某个方法,那么子类就有权利重写这个方法。,10 页,5.2.2 能力目标,子类通过重写方法,改变继承的行为 。,11 页,5.2.3 任务驱动,将下列University.java和ImportantUniversity.java中的【代码】替换为程序代码。Application5_3.java 程序运行效果如图5.3。,12 页,任务 小结,重写方法既可以操作继承的成员变量、调用继承的方法,也可以操作子类新声明的成员变量、调用新定义的其他方法,但无法操作被子类隐藏的成员变量和方法。 需要特别注意的是, 子类在重写父类的方法时,不可以降低方法的访问权限(访问权

6、限从高到低的排列顺序是:public、protected、友好的、private .,13 页,5.2.4 实践环节,Application5_4.java,14 页,5.3 super关键字 5.3.1 核心知识_1,1用super操作被隐藏的成员变量和方法 子类一旦隐藏了继承的成员变量,那么子类创建的对象就不再拥有该变量,该变量将归关键字super所拥有,同样子类一旦隐藏了继承的方法,那么子类创建的对象就不能调用被隐藏的方法,该方法的调用由关键字super负责。 2使用super调用父类的构造方法 当用子类的构造方法创建一个子类的对象时,子类的构造方法总是先调用父类的某个构造方法,也就是说

7、,如果子类的构造方法没有明显地指明使用父类的哪个构造方法,子类就调用父类的不带参数的构造方法。 子类在其构造方法中需使用super来调用父类的构造方法,而且super必须是子类构造方法中的头一条语句,即如果在子类的构造方法中,没有明显地写出super关键字来调用父类的某个构造方法,那么默认地有: super();,15 页,5.3.1 核心知识 _2,class Student int number; Student() Student(int number) this.number = number; class UniverStudent extends Student boolean i

8、sMerried; UniverStudent(int number,boolean b) super(number); /调用父类的构造方法Student(int number) isMerried = b; ,16 页,5.3.2 能力目标,在子类中使用super关键字调用被隐藏(覆盖)的方法 。,17 页,5.3.3 任务驱动,将下列 BeijingWaterUser.java中的【代码】替换为程序代码。WaterUser.java 和 Application5_5.java 程序运行效果如图5.4。,18 页,任务 小结,(1)当super调用被隐藏的方法时,该方法中出现的成员变量就是

9、被子类隐藏的成员变量或继承的成员变量。 (2)如果类里定义了一个或多个构造方法,那么Java不提供默认的构造方法(不带参数的构造方法),因此,当在父类中定义多个构造方法时,应当包括一个不带参数的构造方法,以防子类省略super时出现错误。,19 页,5.3.4 实践环节,Application5_6.java,20 页,5.4 final关键字 5.4.1 核心知识,final关键字可以修饰类、成员变量和方法中的局部变量。 1final类 可以使用final将类声明为final类。final类不能被继承,即不能有子类。 final class A 2final方法 如果用final修饰父类中的

10、一个方法,那么这个方法不允许子类重写。 3常量 如果成员变量或局部变量被修饰为final的,就是常量。,21 页,5.4.2 能力目标,掌握final关键字的用法 。,22 页,5.4.3 任务驱动,将Circle.java中的【代码】替换为程序代码。 Application5_7.java 程序运行效果如图5.5。,23 页,任务 小结,final参数可以接受所传递值,但在方法内不容许对final参数进行写操作,即参数得到值之后,就按常量对待final参数,24 页,5.4.4 实践环节,A.java,25 页,5.5 对象的上转型对象 5.5.1 核心知识,1上转型对象 假设People类

11、是American类的父类,当用子类创建一个对象,并把这个对象的引用放到父类的对象中时,比如:,2上转型对象的特性 1)上转型对象不能操作子类新增的成员变量;不能调用子类新增的方法。 2)上转型对象可以访问子类继承或隐藏的成员变量,也可以调用子类继承的方法或子类重写的实例方法。,People person; person = new American ();或 People person; American anAmerican = new American (); person = anAmerican;,这时,称对象person是对象anAmerican的上转型对象。,26 页,5.5.2

12、 能力目标,掌握怎样使用上转型对象调用子类重写的实例方法,27 页,5.5.3 任务驱动,将下列Application5_8.java中的【代码】替换为程序代码。 程序运行效果如图5.7。People.java ChinaPeople.java AmericanPeople.java,28 页,任务 小结,(1)在Aplication类的main方法中,不能让上转型对象people调用speakChinese()或void speakEnglish(),因为这两个方法不是子类继承或重写的方法,而是子类新增的方法。 (2) 如果子类重写了父类的静态方法(static修饰的方法),那么子类对象的上

13、转型对象不能调用子类重写的静态方法,只能调用父类的静态方法。,29 页,5.5.4 实践环节,上机调试下列代码,特别注意程序的输出结果。 Application5_9.java,30 页,5.6 多态和抽象类 5.6.1 核心知识,1多态性 多态性就是指父类的某个方法被其子类重写时,可以各自产生自己的功能行为,也就是说一个类的不同子类在重写方法时可以各自产生适合其子类对象的行为。 2用上转型对象体现多态 上转型对象在调用子类重写的方法时就可能具有多种形态,因为不同的子类在重写父类的方法时可能产生不同的行为。 3抽象类及抽象方法 用关键字abstract修饰的类称为abstract类(抽象类)。

14、如: abstract class A 用关键字abstract修饰的方法称为abstract方法(抽象方法). 1)和普通类相比,abstract类中可以有abstract方法,也可以有非abstract方法。 2)对于abstract类,不能使用new运算符创建该类的对象。如果一个非抽象类是某个抽象类的子类,那么它必须重写父类的抽象方法,给出方法体。 3)可以使用abstract类声明对象,尽管不能使用new运算符创建该对象,但该对象可以成为其子类对象的上转型对象,那么该对象就可以调用子类重写的方法,31 页,5.6.2 能力目标,掌握用抽象类的对象做上转型对象,并体现子类的多态 。,32

15、 页,5.6.3 任务驱动,将下列Application5_10.java中的【代码】替换为程序代码。 Animal.java Dog.java Cat.java 程序运行效果如图5.8。,33 页,任务 小结,当用上转型对象调用子类重写的方法时,具有很好通用性,因为程序不必关心子类的具体对象的名字,就可以让上转型对象调用子类体重写的方法。 不允许使用static修饰abstract方法,即abstract方法必须是实例方法。不允许使用final修饰abstract类,即要允许abstract类有子类,34 页,5.6.4 实践环节,上机调试下列代码,注意对象car是哪些对象的上转性对象,并怎

16、样体现多态的 。 Application5_11.java,35 页,5.7 接口与实现 5.7.1 核心知识_1,1接口的定义 使用关键字interface来定义一个接口。接口的定义和类的定义很相似,分为接口的声明和接口体,例如: interface Printable public final static int MAX=100; public abstract void add(); public abstract float sum(float x ,float y); 接口使用关键字interface来声明自己是一个接口,格式: interface 接口的名字 接口体中包含常量的声明和抽象方法两部分。 接口体中所有的常量的访问权限一定都是public,而且是static常量。 所有的抽象方法的访问权限一定都是public,如: interface Printabl

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 医学/心理学 > 基础医学

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号