继承与多态ppt课件.ppt

上传人:本田雅阁 文档编号:2648686 上传时间:2019-04-29 格式:PPT 页数:29 大小:134.53KB
返回 下载 相关 举报
继承与多态ppt课件.ppt_第1页
第1页 / 共29页
继承与多态ppt课件.ppt_第2页
第2页 / 共29页
继承与多态ppt课件.ppt_第3页
第3页 / 共29页
亲,该文档总共29页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《继承与多态ppt课件.ppt》由会员分享,可在线阅读,更多相关《继承与多态ppt课件.ppt(29页珍藏版)》请在三一文库上搜索。

1、Tel:0571-88394222 QQ;106159278,继承与多态,Tel:0571-88394222 QQ;106159278,继承 继承基本类 继承的成员变量、方法。 覆盖父类的方法:重写(访问权限、参数、名称)。 覆盖父类的变量。 多态 动态绑定 多态与动态绑定 重载与类型判断,目标,Tel:0571-88394222 QQ;106159278,理解继承,父类、子类和继承 定义: 子类:继承而得到的类为子类 。子类继承父类的状态和行为,同时也可以修改父类的状态或重写父类的行为,并添加新的状态和行为 父类:被继承的类为父类,父类包括所有直接或间接被继承的类,Tel:0571-8839

2、4222 QQ;106159278,父类、子类和继承,Java语言是单继承机制 ,不支持多重继承 单继承是代码更加可靠。 抽象类使用 extends 接口可以提供多继承功能。implements Java中,所有的类都是通过直接或间接地继承java.lang.Object得到的。,Tel:0571-88394222 QQ;106159278,动物,猫,狗,马,Object,默认继承,Tel:0571-88394222 QQ;106159278,创建子类 通过在类的声明中加入extends子句来创建一个类的子类,其格式如下: class SubClass extends SuperClass 说

3、明:如果缺省extends子句,则该类为java.lang.Object的子类,Tel:0571-88394222 QQ;106159278,子类能够继承什么? 父类中public和protected的成员。 子类能够继承父类中没有访问控制(默认)的成员,只要子类和父类在同一个包内。 子类不能够继承什么? 父类中private成员方法。 子类不能继承父类中构造方法。 构造方法没有继承的 间接的多重继承(多层继承)非多继承。,Tel:0571-88394222 QQ;106159278,分配成员变量的存储空间并进行默认的初始化。 调用构造函数 构造函数可以调用其他的构造函数this(),默认无参

4、数的。如果未定义,则系统有默认的。 默认调用super()。除非显示调用其他的super(int num)。 调用是且只是第一行。,Tel:0571-88394222 QQ;106159278,重写、隐藏(覆盖),变量的隐藏: 子类中声明了和父类同名的变量,父类的成员变量被隐藏。 方法的重写: 子类中定义了与父类相同的方法, 则父类的方法被重写。重写的方法和父类中被重写的方法要具有相同的名字,相同的参数表和相同的返回类型 重写的方法有比父类更具体的行为 子类通过成员变量的隐藏和方法的重写可以把父类的状态和行为改变为自身的状态和行为,Tel:0571-88394222 QQ;106159278,

5、重写,Class Animal String name; Public void sound() System.out.println(“animal sound”); Class Dog extends Animal String name; /子类声明时覆盖 Public void sound() /重写方法 System.out.println(“wa.”); Public void sound(String name) System.out.println(“重载sound 方法。“); ,Tel:0571-88394222 QQ;106159278,super用来引用当前对象的父类对

6、象, super来实现对父类成员的访问。 应用: 子类在隐藏了父类的成员变量或重写了父类的方法后,常常还要用到父类的成员 在重写的方法中使用父类中被重写的方法以简化代码的编写,super,Tel:0571-88394222 QQ;106159278,public class Father_baby extends Father String num=“baby num“; public void sound() System.out.println(“baby sound”);/子类自己的实现体 super.sound(); /调用父类的sound方法。 System.out.println(

7、num); /子类中的num public class Father int num; public void sound() System.out.println(“father sound.“); ,Tel:0571-88394222 QQ;106159278,当子类对象进行初始化时,先调用父类的构造函数,再调用自己的构造函数 子类继承父类的成员变量、方法。若先调用子类,子类若用到父类中定义的信息,则会出错。 说明: 用来调用父类的构造函数super( paramlist )必须放在子类构造方法的句首。 如果子类没有明确的调用父类的构造函数,编译器会自动的调用super()语句,它调用父类

8、的默认构造函数。 如果父类没有不带参数的构造函数则编译出错。,继承中的构造函数调用,Tel:0571-88394222 QQ;106159278,多态,定义: 多态是指不同的类对象收到同一消息可以产生完全不同的响应。 实现 通过子类覆盖父类的成员方法的方式实现。 继承 重写 父类声明子类实例化 父类调用,Tel:0571-88394222 QQ;106159278,对于重写或继承的方法,Java运行时系统根据调用该方法的实例的类型来决定选择哪个方法调用。,Tel:0571-88394222 QQ;106159278,说明: 对子类的一个实例,如果子类重写了父类的方法,则运行时系统调用子类的方法

9、, 如果子类继承了父类的方法(未重写),则运行时系统调用父类的方法。,Tel:0571-88394222 QQ;106159278,例: class A void callme( ) System.out.println(“Inside As callme( ) method“); class B extends A void callme( ) System.out.println(“Inside Bs callme( ) method“); public class Dispatch public static void main( String args ) A a = new B( )

10、; a.callme( ); /输出: Inside Bs callme( ) method,Tel:0571-88394222 QQ;106159278,绑定,早期绑定 将一个方法调用同一个方法主体连接到一起就称为“绑定”Binding。若在程序运行前执行绑定(由编译器和链接程序完成如果有的话)。 动态绑定 解决的办法就是“后期绑定”,它意味着绑定是在运行时间进行,以对象的类型为基础。后期绑定也叫作“动态绑定”或“运行时间绑定”。若一种语言实现了后期绑定,那么同时还要提供一些机制,以便在运行时间正确判断对象类型,并调用适当的方法。也就是说,编译器此时仍然不知道对象的类型,但方法调用机制能自己

11、去调查,找到正确的方法主体。 Java的所有方法绑定都采用“后期绑定”技术,除非一个方法已被明确声明成final。也就是说,我们通常不必关心是否会进行后期绑定它是自动进行的。 在运行时去找方法,而不是编译或者链接时。,Tel:0571-88394222 QQ;106159278,其他,Object Final 类的初始化 重载,Tel:0571-88394222 QQ;106159278,类java.lang.Object处于Java开发环境的类层次树的根部,其他所有的类都直接或间接地为它的子类 一个类如果没有声明继承某个类,则默认继承Object类。 public class Employe

12、e . 等价于: public class Employee extends Object . ,java.lang.Object,Tel:0571-88394222 QQ;106159278,该类定义了一些所有对象最基本的状态和行为常用的有: equals() getClass toString finalize notify notifyAll wait,Tel:0571-88394222 QQ;106159278,final数据、方法和类,1. final数据 它可以是编译时的常量 它可以是运行时才初始化的常量 只可以一次性赋值,Tel:0571-88394222 QQ;10615927

13、8,2. final方法 有些方法不能被重写,这时把它限定为final方法,其格式为: Public final void sound() System.out.println(“final method”); ,Tel:0571-88394222 QQ;106159278,final类 不能被继承。有时候希望一些类不能被继承 安全性的原因:如Java中的String类,integer,Float,Boolean 面向对象的设计上的考虑:如果你认为一个类的定义已经很完美,不需要再生成它的子类,这时也应把它修饰为final类 final class Father int i = 7; int j

14、 = 1; void sound() class Son extends Father /error ,Tel:0571-88394222 QQ;106159278,Final 与 继承,子类进行方法的重写时,不能使用比父类中被重写的方法更严格的访问权限。 final关键字 final标记的类不能被继承。 final标记的方法不能被子类重写。 final标记的变量(成员变量或局部变量)即成为常量,只能赋值一次。(final标记的成员变量必须在声明的同时或在该类的构造方法中显式赋值,以后才能使用)。 在方法中定义的内部类只能访问方法中的final类型的局部变量,因为用final定义的局部变量相当

15、于是一个常量,它的声明周期超出方法运行的生命周期。,Tel:0571-88394222 QQ;106159278,练习,在Student类添加一个代表学生毕业时间的属性,以形成一个Student的子类:CollegeStudent。 Student毕业时间为当前时间, CollegeStudent毕业时间比student的毕业时间推后1个月。请在CollegeStudent中打印两个毕业时间。 所有的电器都有用电的方法,电视也用电,但是还可以放电影,手机电视还可以打电话。利用继承关系实现。,Tel:0571-88394222 QQ;106159278,两个小女孩分别养了猫和狗,猫和狗继承了类:动物。让各小女孩家的宠物叫一声。 创建员工类,里面有工资的属性。小时工是员工的子类,里面也有工资的属性。两个属性的类型和变量名称都相同。员工类中有返回工资的方法,小时工重写了该方法,但返回自己的工资,还可以输出员工工资。(员工和小时工的工资计算方式不同,即返回工资方法的实现不同),Tel:0571-88394222 QQ;106159278,演唱会演出,歌手唱歌,舞者跳舞。(提示:歌手和舞者都是人,继承了类:人;演唱会中只有人。),Tel:0571-88394222 QQ;106159278,联系方式,杭州和盈科技公司 Address:潮王路238号银地大厦2F ,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1