继承的学习
如果多个类中存在相同的属性和行为时,将这些内容抽取到单独的一个类中,那么多个类就无需再定义这些属性和行为,只要去继承这个单独的类即可。
其中,多个类称为子类,派生类,单独的那一个类称为父类、超类(superclass)、基类
继承描述的是事物之间的所属关系,这种关系是:is-a
的关系,在继承关系中,“子类就是一个父类”。也就是说,子类可以被当作父类看待。
例如:父类是员工,子类是讲师,那么“讲师就是一个员工”。关系:is-a。
一般情况下,父类更通用,子类更具体。我们可以通过继承,使多种事物之间形成一种关系体系。
定义
- 继承:就是子类继承父类的属性和行为,使得子类对象具有与父类相同的属性、相同的行为。子类可以直接访问父类中的【非私有】的属性和行为。
好处:
-
可以提高代码的复用性。
-
类与类之间可以产生一种关系,是【多态的前提】。
继承的格式
通过extends
关键字,可以声明一个子类继承另一个父类。
继承后的特点----成员变量
当类之间产生了关系后,其中各类中的成员变量有哪些影响?
成员变量不重名
如果子类父类中定义的成员变量名字不重名,这时的的访问没有任何影响
成员变量重名
如果子类父类中出现重名的成员变量,这时的访问是有影响的
在父子类的继承关系当中,如果成员变量重名,则创建子类对象时,访问有两种方式:
直接通过子类对象访问成员变量:等号左边是谁,就优先用谁,没有会向上找
间接通过成员方法访问成员变量:该方法属于谁,就优先用谁,没有则继续向上找。
子父类中出现了重名的成员变量时,在子类中想要访问父类中的非私有的成员变量时,需要使用super
关键字,修饰父类的成员变量,类似于this
操作。
继承后的特点-----构造方法
先回忆下构造方法的定义和作用:
-
构造方法的名字和类名要保持一致,所以子类是无法继承父类当中的构造方法
-
构造方法的作用一般是用来初始化成员变量,所以子类在初始化的过程中,必须先执行父类中的初始化动作。子类的构造方法当中默认有一个super()方法,表示调用的父类的构造方法,父类的成员变量初始化之后,才可以给子类使用。