继承概念
Java中提供一个关键字extends,用这个关键字,我们可以让一个类和另一个类建立起继承关系。
格式:
上图中,Student称为子类(派生类),Person称为父类(基类或超类)。
使用继承的好处
1.可以把多个子类中重复的代码抽取到父类中了,提高代码的复用性。
2.子类可以在父类的基础上,增加其他的功能,使子类更强大。
什么时候用继承?
当类与类之间,存在相同(共性)的内容,并满足子类是父类中的一种,就可以考虑使用继承,来优化代码
继承的特点
1.Java只支持单继承,不支持多继承,但支持多层继承。
2.Java中所有的类都直接或者间接继承于Object类。
单继承:一个子类只能继承一个父类
不支持多继承:子类不能同时继承多个父类
多层继承:子类A继承父类B,父类B可以继承父类C
子类能继承父类中的哪些内容?
继承中:成员变量的访问特点
就近原则:如图所示:在ziShow()中有局部变量name,则打印局部变量name的值"ziShow";没有就向上找,打印成员变量name的值"Zi";还没有就接着向上找到父类的成员变量name的值"Fu";如果在整个继承体系中都没有就报错。
this、super
继承中:构造方法的访问特点
1.父类中的构造方法不会被子类继承。(因为构造方法名需跟类名一致)
2.子类中所有的构造方法默认先访问父类中的无参构造,再执行自己。
为什么?
子类在初始化的时候,有可能会使用到父类中的数据,如果父类没有完成初始化,子类将无法使用父类的数据。
子类初始化之前,一定要调用父类构造方法先完成父类数据空间的初始化。
怎么调用父类构造方法的?
子类构造方法的第一行语句默认都是:super(),不写也存在,且必须在第一行。
如果想调用父类有参构造,必须手动写super进行调用。
在空参构造中通过this调用有参构造方法
用途:给创建对象的属性设置默认值
注:this必须放在空参构造方法的第一行