活动地址:CSDN21天学习挑战赛
学习的最大理由是想摆脱平庸,早一天就多一份人生的精彩;迟一天就多一天平庸的困扰。各位小伙伴,如果您:
想系统/深入学习某技术知识点…
一个人摸索学习很难坚持,想组团高效学习…
想写博客但无从下手,急需写作干货注入能量…
热爱写作,愿意让自己成为更好的人…
…
继承
继承的概念:
java中提供一个关键字extends,用这个关键字,我们可以让一个类和另一个类建立起父子关系。
public class Student extends People {}
Student称为子类(派生类),People称为父类(基类或超类)。
继承的作用:
当之类继承父类后,就可以直接使用父类公共的属性和方法了。
继承的好处:提高代码的复用性,减少代码冗余,增强类的功能扩展性
继承的格式:子类extends父类
子类继承父类的特点:子类可以得到父类的属性和行为,子类可以使用。
继承的特点:
1.子类可以继承父类的属性及行为,但是子类不能继承父类的构造器。
2.java是单继承模式,一个类只能继承一个直接父类
3.java不支持多继承、但是支持多层继承
4.java所有的类都是Object的子类
子类可以继承父类的私有成员,但是不能直接访问
子类可以使用父类的静态成员,但不能继承父类的静态成员
一、继承后成员变量、成员方法访问特点
就近原则
1.先在子类局部范围查找
2.然后子类成员范围查找
3.最后父类成员范围查找,父类中没找到则报错
出现重名的成员,会优先使用子类的成员,如果一定要在子类中用父类的成员怎么办?
可以通过super关键字,指定访问父类的成员。
super.父类成员变量/父类成员方法
二、方法重写
方法重写:子类中出现和父类一模一样的方法声明,我们就称为这个方法是重写的。
应用场景:当子类需要父类的功能,但父类的该功能不完全满足自己的需求时子类可以重写父类中的方法。
原理:在子类中声明和父类一模一样的方法,并且调用父类该方法,可在调用父类方法代码后面继续添加代码,起到更新旧方法的作用。
@Override重写注解
@Override是放在重写后的方法上,作为重写是否正确的检验注解,加上改注解如果重写出现错误,编译阶段会出现错误提示
方法重写注意事项:
1.重写方法的名称、形参列表必须与被重写方法的名称与参数列表一致。
2.私有方法不能被重写。
3.子类重写父类方法时,访问权限必须大于或等于父类。
4.子类不能重写父类的静态方法,如果重写会报错。
三、子类构造器
子类继承父类后子类的构造器特点:
子类中所有的构造器默认都会先访问父类中的无参构造器,再执行自己。
原因:子类在初始化的时候,有可能会使用到父类中的数据,如果父类没有完成初始化,子类将无法使用父类的数据,子类初始化之前,一定要调用父类构造器先完成父类数据空间的初始化。
子类构造器的第一行默认都是super(),不写也存在。
如果父类中没有无参构造器,只有有参构造器,会报错,因为子类默认调用父类无参构造器,可在子类构造器中使用super(…),手动调用父类有参构造器
super调用父类构造器的作用是什么?
通过调用父类有参构造器来初始化继承自父类的数据。
四、this与super使用总结
this代表本类对象对象的引用;super代表父类存储空间的标识。
this
访问本类成员变量:this.成员变量()
访问本类成员方法:this.成员方法(…)
访问本类构造器:this(…)
super
访问父类成员变量:super.成员变量()
访问父类成员方法:super.成员方法(…)
访问父类构造器:super(…)