欢迎来到天天文库
浏览记录
ID:58701087
大小:242.50 KB
页数:82页
时间:2020-10-04
《第4章 继承、多态与接口ppt课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第4章继承、多态与接口2021/9/31第4章继承、多态与接口4.1继承4.1.1Java继承的实现1、继承的概述类的继承是面向对象的程序设计语言所具有的重要技术。引入继承机制就是利用现有的类来定义新的类。这是面向对象程序设计的一个原则:不必每次都从头开始定义一个新的类,而是将这个新的类作为一个或若干个现有类的扩充或特殊化。如果不使用继承,每个类都必须显式地定义它所有的特征。然而使用继承后,定义一个新的类时只需定义那些与其他类不同的特征,那些与其他类相同的通用特征则可从其他类继承下来,而不必逐一显式地定义这些通用特征。2021/9/32第4章继承、多态与接口继承是存在于面向对象程序中两
2、个类之间的种关系(子类与父类关系)。(1)被继承的类称为父类或超类,继承父类或超类的所有属性和方法的类称为子类;(2)父类是所有子类的公共域和公共方法的集合,而每一个子类则是父类的特殊化,是对公共域和方法在功能、内涵方面的扩展和延伸,即子类将继承父类的状态和行为,同时子类可以增加变量和方法,也可以重载继承的方法并且为这些方法提供特殊实现。(3)使用继承的主要优点是使程序结构清晰、降低编码和维护的工作量。继承为组织和构造软件程序提供了一个强大的和自然的机理。2021/9/33第4章继承、多态与接口类的继承原则Java中,当声明了直接子类和直接父类的继承关系后,直接子类继承直接超类应遵循如
3、下的继承规则:直接子类继承那些被声明为public或protected的直接超类成员(包括成员变量和成员方法);直接子类继承那些未被存取权限修饰符修饰的直接超类成员,只要该子类与该超类在同一个包中;如果直接子类声明了一个与直接超类中的成员同名的成员,则该子类不继承该超类中的该同名成员;直接子类不继承被修饰为private的直接超类的成员.不能继承超类的构造方法.2021/9/34第4章继承、多态与接口2、继承的语法在Java语言中,一个名为Class1的类继承另一个已有类Class2的语法形式为:publicclassClaaslextendsClass2{成员列表;};2021/9/
4、35第4章继承、多态与接口其中,类Class2称为类Class1的基类,新定义的类Class1称为Class2的派生类,extends是Java语言的保留字,指明类之间的继承关系。花括号中定义的是Class1中新增加的数据成员与方法成员。受保护成员具有公有成员与私有成员的双重角色:它可以被后代类的方法成员访问,但不可以被其他不相关的类的方法成员所访问。例子2021/9/36第4章继承、多态与接口继承与成员访问控制继承机制引入了受保护成员,提供了一种新的成员访问控制级别,因此需要进一步了解Java语言的类成员访问控制规则。通过上一章的学习我们知道,一个类自身的方法成员可以访问它所有的成员
5、,而其他类的方法成员则只能访问这个类的公有成员,不能访问这个类的私有成员,这是Java语言最基本的成员访问控制规则。2021/9/37第4章继承、多态与接口在引入继承机制后,子类继承了超类除构造方法和私有成员以外的所有成员,这些成员称为子类的继承成员。注意,继承成员不仅包括在超类中定义的公有、受保护成员,还包括超类的继承成员,即超类继承它的祖先类得到的成员。在子类的内部,不仅能够访问子类自己定义的所有成员,也能够访问超类中公有和受保护的成员,但不能访问超类中私有的成员。2021/9/38第4章继承、多态与接口4.1.2构造方法在类继承中的作用严格地说,构造方法不能继承,子类继承父类的所
6、有成员变量和成员方法,但不继承父类的构造方法。由于子类在创建对象时要对继承来自父类的成员进行初始化,因此,在创建子类除了执行子类的构造方法外,还需要调用父类的构造方法,必须遵循如下原则:(1)当子类未定义构造方法时,创建对象时将无条件地调用父类的无参数构造方法;(2)对于父类的含参数的构造方法,子类可以在自己构造方法中使用关键字super来调用它,但super调用语句必须是子类构造方法中的第一个可执行语句;2021/9/39第4章继承、多态与接口(3)子类在自己定义构造方法中如果没有用super明确调用父类的构造方法,则在创建对象时,将自动先执行父类的无参构造方法,然后再执行自己定义的
7、构造方法。下面的程序在编译时将出错,原因在于父类不含无参构造方法:classparent{Stringmy;publicparent(Stringx){my=x;}}publicclasssubclassextendsparent{}2021/9/310第4章继承、多态与接口在parent类中由于定义了一个有参构造方法,所以系统不会自动产生无参构造方法。如果将有参构造方法注释,编译将可以通过。鉴于上述情形,一个类在设计时如果有构造方法,最好提供
此文档下载收益归作者所有