欢迎来到天天文库
浏览记录
ID:52085157
大小:485.50 KB
页数:49页
时间:2020-03-31
《《扩展类与继承》PPT课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、Java语言程序设计第六章扩展类与继承6.1子类与父类上一章我们主要学习了类和对象的有关知识,讨论了类的构成以及用类创建对象等主要问题,本章的主要介绍类的继承、和继承有关的多态性以及接口等重要概念。子类与父类继承是一种由已有的类创建新类的机制。利用继承,我们可以先创建一个共有属性的一般类,根据该一般类再创建具有特殊属性的新类,新类继承一般类的状态和行为,并根据需要增加它自己的新的状态和行为。由继承而得到的类称为子类,被继承的类称为父类(超类)(superclass)。6.1子类与父类父类可以是自己编写的类也可以是java类库中的类。利用继承有利
2、于实现代码的重复使用,子类只需要添加新的功能代码即可。Java不支持多重继承,即子类只能有一个父类。使用关键字extends来声明一个类是另外一个类的子类,格式如下:class子类名extends父类名{…..}6.2子类的继承性1.继承的定义所谓类继承就是子类继承父类的成员变量和方法作为自己的成员变量和方法,就好象它们是在子类中直接声明一样。当然,子类能否继承父类的变量和方法还有一定的限制。下面对其进行详细介绍。2.子类和父类在同一包中的继承性如果子类和父类在同一个包中,那么子类自然地继承了其父类中不是private的成员变量作为自己的成员变
3、量,并且也自然地继承了父类中不是private的方法作为自己的方法。继承的成员变量以及方法的访问权限保持不变。例子6.2子类的继承性下面我们看一个例子。程序的运行结果见下图6.2子类的继承性3.子类和父类不在同一包中的继承性如果子类和父类不在同一个包中,那么子类只能继承父类的protected、public成员变量和方法,继承的成员或方法的访问权限不变。如果子类和父类不在同一个包里,子类不能继承父类的友好变量和友好方法。6.3子类对象的构造过程当用子类的构造方法创建一个子类的对象时,子类的构造方法总是先调用父类的某个构造方法,如果子类的构造方法
4、没有指明使用父类的哪个构造方法,子类就调用父类的不带参数的构造方法。因此,我们可以这样来理解子类创建的对象:(1)将子类中声明的成员变量做为子类对象的成员变量。(2)父类的成员变量也都分配了内存空间,但只将其中一部分(继承的那部分)做为子类对象的成员变量。父类的private成员变量尽管分配了内存空间,但它不作为子类的成6.3子类对象的构造过程元变量,即父类的私有成员不归子类管理。方法的继承性与成员变量相同。但若子类和父类不在同一包中,尽管父类的友好成员分配了内存空间,但也不作为子类的成员。子类对象内存示意图如下图子类未继承的成员子类未继承的成
5、员引用子类对象子类继承的成员子类继承的成员子类声明的成员子类声明的成员6.3子类对象的构造过程上页示意图中的“叉号”表示子类中声明定义的方法不可以操作这些内存单元,“对号”表示子类中声明定义的方法可以操作这些内存单元。通过上图,给我们有感觉好象:子类创建对象时似乎浪费了一些内存,因为当用子类创建对象时,父类的成员变量也都分配了内存空间,但只将其中一部分做为子类对象的成员变量,但实际情况并非如此,我们需注意到,子类中还有一部分方法是从父类继承的,这部分方法却可以操作这部分变量。下面的例子中,子类对象调用继承的方法操作这些未被子类继承却分配了内存空
6、间的变量。6.4成员变量的隐藏和方法的重写1.成员变量的隐藏子类可以隐藏继承的成员变量,当在子类中定义和父类中同名的成员变量时,子类就隐藏了继承的成员变量,即子类对象以及子类自己声明定义的方法操作与父类同名的成员变量。下面我们看一个例子,在这个例子中子类隐藏了从父类继承的double型变量。该程序的运行结果如下:6.4成员变量的隐藏和方法的重写2.方法重写子类也可以隐藏方法,子类通过方法重写来隐藏继承的方法。方法重写是指:子类中定义一个方法,并且这个方法的名字、返回类型、参数个数和类型与从父类继承的方法完全相同。子类通过方法的重写可以把父类的状
7、态和行为改变为自身的状态和行为。这时,如果子类想使用被隐藏的方法,必须使用关键字super,我们将在后面讲述super的用法。下面这个例子可以帮助我们更好的理解方法的重写。6.4成员变量的隐藏和方法的重写需要注意的是:方法重写时一定要保证方法的名字、类型、参数个数和类型同父类的某个方法完全相同,只有这样,子类继承的这个方法才被隐藏。如果子类在准备隐藏继承的方法时,参数个数或参数类型与父类的方法不尽相同,那实际上也没有隐藏继承的方法,这时子类就出现两个方法具有相同的名字。下面我们看个例子。程序的运行结果如右图:6.4成员变量的隐藏和方法的重写3.
8、访问修饰符protected的进一步说明一个类A中的protected成员变量和方法可以被它的直接子类和间接子类继承,比如B是A的子类,C是B的子类,
此文档下载收益归作者所有