一、继承的概述(Inherited)
1、由来
多个类中存在相同属性和行为时,将这些内容抽取到单独一个类中,那么多个类无需再定义这些属性和行为,只要继承那个类即可。
其中,多个类可以称为 子类(派生类),单独的那一个类称为 父类、超类(super class)或 基类。
继承描述的是事物之间的所属关系,这种关系是 : is - a 的关系。(子类就是一个父类:子类 is a 父类)
如上图:兔子属于食草动物,食草动物属于动物。可见,父类是通用,子类更具体。通过继承,可以使多种事物之间形成一种关系体系。
2、定义
继承:就是子类继承父类的属性和行为。使得子类对象具有与父类相同的属性、相同的行为。子类可以直接访问父类中的非私有的属性和行为。
3、好处
a、提高代码的复用性;
b、有利于新功能的扩展;
c、类与类之间产生了关系,是多态的前提;
二、继承
1、为什么要有继承?
多个类中存在相同的属性和行为时,将这些内容抽取到单独一个类中,那么多个类无需再定义这些属性和行为,只要继承那个类即可。
2、类继承语法规则
语法规则:
1 // 定义父类
2 class 父类名称 {
3 ...
4 }
5
6 // 定义子类
7 [修饰符] class 子类名称 extends 父类名称 {
8 ...
9 }
此处的多个类称为子类(派生类),单独的这个类称为父类(基类或超类)。可以理解为:“子类 is a 父类”。
3、继承的注意点
(1)一旦子类A继承父类B以后,子类A中就获取了父类B中声明的所有的属性和方法。
(2)特别的,父类中声明为 private 的属性或方法,子类继承父类以后,仍然认为获取了父类中私有的结构。只有因为封装性的影响,使得子类不能直接调用父类的结构而已。
关于继承的规则: 子类不能直接访问父类中私有的(private)的成员变量和方法,但是可以通过 setter与 getter 方法来调用。
(3)子类继承父类以后,还可以声明自己特有的属性或方法:实现功能的拓展。
(4)在Java 中,继承的关键字用的是“extends”,即子类不是父类的子集,而是对父类的“扩展” 。
(5)Java 只支持单继承和多层继承,不允许多重继承;
-
-
- 一个子类只能有一个父类;
- 一个父类可以派生出多个子类;
-
4、继承的好处
(1)继承的出现减少了代码冗余,提高了代码的复用性;
(2)继承的出现,更有利于功能的扩展;
(3)继承的出现让类与类产生了关系,提供了多态的前提;
注意:不要仅为了获取其他类中某个功能而去继承;
5、Java 中关于继承性的规定
(1)一个类可以被多个子类继承;
(2)Java 中类的单继承性:一个类只能有一个父类;
(3)子父类是相对的概念;
(4)子类直接继承的父类,称为:直接父类。间接继承的父类称为:间接父类;
(5)子类继承父类以后,就获取了直接父类以及所有间接父类中声明的属性和方法;
注意:不要仅为了获取其他类中某个功能而去继承。
三、继承的案例
注意:Student类继承了父类Person的所有属性和方法,并增加了一个属性school。 Person中的属性和方法,Student都可以使用。