JAVA——继承详解
继承是面向对象三大特征之一,可以让类跟类之间产生父子关系
可以把多个子类中重复的代码抽取到父类中,子类可以直接使用,减少代码重复,提高代码的复用性
格式:public class 子类 extends 父类 {}
继承后子类的特点
-
子类可以得到父类的属性和行为,子类可以使用
-
子类可以在父类的基础上新增其他功能,子类更强大
-
JAVA只能单继承,一个类只能继承一个直接父类
-
JAVA不支持多继承,但是支持多层继承
-
JAVA中所有类都直接或间接继承Object类
java子类只能访问父类中非私有制的案例
子类能继承父类中的那类内容
构造方法 | 非私有不能 | private不能 |
---|---|---|
成员变量 | 非私有能 | private能 |
成员变量 | 虚方法表能 | 否则不能 |
继承中成员变量访问特点:就近原则
现在局部位置找,本类成员位置找,父类成员位置找,逐级往上
-
name从局部位置开始往上找
-
this.name从本类成员位置开始往上找
-
super.name从父类成员位置开始往上找
方法的重写
当父类的方法不能满足子类现在的需要时,需要进行方法的重写
书写格式
在继承体系中,子类出现和父类中一模一样的方法声明,我们就称子类这个方法是重写的方法
@Override重写注解
-
@Override是放在重写后的方法上,校验子类重写是语法是否正确
-
加上注解后如果有红色波浪线,表示语法错误
-
建议重写方法都加@Override注解,代码安全
注意事项
-
重写方法的名称,形参列表必须与父类一致
-
子类重写父类方法时,访问权限子类必须大于等于父类(空着不写<protected<public)
-
子类重写父类方法时,返回值类型必须小于等于父类
-
建议:重写的方法尽量和父类一致
-
只由被添加到虚方法表中的方法才能被重写
继承中构造方法的访问特点
-
子类不能继承父类的构造方法,但是可以通过super调用
-
子类构造方法第一行,有一个默认的super();
-
默认先访问父类中无参的构造方法,在访问有参构造
-
如果想要方法父类有参构造,必须手动书写