欢迎来到天天文库
浏览记录
ID:39331256
大小:600.60 KB
页数:31页
时间:2019-07-01
《JAVA面向对象编程第四章继承性和多态性》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第4章 继承性和多态性2主要内容4.1继承性派生类的定义super关键字protected和final关键字4.2多态性4.3抽象类和接口抽象类接口4.4初始化块继承性&多态性34.1继承性类具有继承性,子类对父类的继承关系体现了现实世界中特殊和一般的关系。通过继承可以更有效地组织程序结构,明确类间关系,并充分利用已有的类来完成更复杂、深入的开发。4.1.1派生类的定义Java中的所有类都是java.lang.Object类的子类。Java语言中派生类的定义格式如下:示例:参看例4.1class<子类>extends<
2、唯一的父类名>{<类定义体>}继承性&多态性44.1.2super关键字1.数据成员的隐藏数据成员的隐藏是指在子类中重新定义一个与父类中已定义的数据成员名完全相同的数据成员,即子类拥有了两个相同名字的数据成员,一个是继承父类的,另一个是自己定义的。当子类要操作继承自父类的同名数据成员时,可使用关键字super引导。2.成员方法的覆盖子类可以重新定义与父类格式完全相同(包括方法名、方法形参的个数和类型、方法返回值的类型)的成员方法,实现对父类方法的覆盖。继承性&多态性5关于方法覆盖只有当实例方法能被访问时,才能进行方法覆
3、盖。私有方法不能被覆盖.静态方法(类方法)能被继承,但不能被覆盖。子类在重新定义父类已有的方法时,应保持与父类完全相同的方法名、返回值类型和参数列表,否则就不是方法的覆盖,而是子类定义自己特有的方法,与父类的方法无关。继承性&多态性63.super关键字super表示的是当前对象的直接父类对象,是当前对象的直接父类对象的引用。super的使用方法有三种:(1)访问直接父类隐藏的数据成员,其使用形式如下:super.数据成员(2)调用直接父类中被覆盖的成员方法,其使用形式如下:super.成员方法(参数)(3)调用直接父
4、类的构造方法,其使用形式如下:super(参数)示例:参看例4.2继承性&多态性73.super关键字子类中一定要调用父类的构造方法1、子类的构造方法必须调用父类的构造方法2、子类可以在自己的构造函数中用super(argument_list)调用父类的构造方法3、如果子类的构造函数中没有显式地调用父类的构造方法,系统将自动调用父类无参数的构造方法,此时如果父类中不存在无参数构造函数的话,编译会出差错4、如果子类构造函数调用super(argument_list),这个语句必须写在构造函数的第一行继承性&多态性84.1
5、.3protected和final关键字1.protected关键字用protected修饰的成员变量可以被三种类所引:该类自身、与它在同一个包中的其它类及在其它包中的该类的子类。2.final关键字使用final关键字可以定义常量。定义类时,在class关键字前加关键字final,表示此类是最终类,不能被其它类继承,不能做父类。用final修饰成员方法,表示此方法不能被它的子类覆盖。继承性&多态性93.native关键字native修饰的方法称为本地方法,此方法使用的目的是为了将其它语言(例如,C、C++、FORTR
6、AN、汇编等)嵌入到Java语言中。这样可以充分利用已经存在的其它语言的程序功能模块,避免重复编程。继承性&多态性104.2多态性多态是面向对象程序设计语言的一个重要特性,在Java中,可以在同一类或不同类中定义名称相同但是操作不同的多个方法。在Java语言中,多态性分为编译时多态性和运行时多态性。继承性&多态性11编译时的多态性通过方法重载实现。Java虚拟机根据传递给方法的参数个数和类型决定调用哪个重载方法。例如,java的打印函数对应的具体情况和操作有多种,如实数打印、整数打印、字符打印等。为了使打印功能完整,实
7、际上定义了若干个名字都叫print的方法,每个方法用来完成一种不同于其他方法的具体打印操作,处理一种具体的打印情况。继承性&多态性例:TestOverride.java1:publicclassTestOverride2:{3:publicstaticvoidmain(Stringargs[])4:{5:D200-Cardmy200=newD200-Card(12345678,1234,50.0,″200″);6:if(my200.performDial(12345678,1234))7:System.out.prin
8、tln(″拨打电话后剩余金额为:″+my200.getBalance());8:if(my200.performDial())9:System.out.println(″拨打电话后剩余金额为:″+my200.getBalance());10:}11:}继承性&多态性51:booleanperformDial()52:{53:if(
此文档下载收益归作者所有