JAVA自学_加强02继承+方法重写
一、定义:
关键词extends,可以让一个类和另一个类建立起父子关系——public class student extends pepole_student是子类,people是父类——子类extends父类
当子类继承父类后,就可以直接使用父类公共的属性和方法——作用:提高代码的复用性,比如定义学生教师两类,其中有很多相同的变量和方法,代码相同,故定义一个父类来保存这些相同的东西
二、继承的设计规范:
子类们的相同特征应该定义在父类中,子类独有的属性行为定义在子类自己里面
三、内存原理:
new出来的新对象在堆内存中分成子类空间和父类空间,对外整体是一整块;
四、继承的特点:
1子类不能继承父类的构造器——但是子类可以继承父类的私有变量,只是不能直接访问 子类不是继承父类的静态成员,而是共享
2单继承模式,一个类只能继承一个直接父类——一个人不能用多个爸
3不支持多继承,但支持多层继承——孩子继承父亲,父亲继承爷爷——孩子既可以用父亲的也可以用爷爷的——面对相同方法时,使用就近原则
4所有类都是Object的子类——默认,直接,间接继承Object
五、继承后成员变量成员方法的访问特点:
就近原则:先在子类的局部范围(某个小方法里的形参)找(如果还想访问类中的大变量,要使用this.),再在子类的成员范围找,最后再父类的成员范围找(如果非要在子类中使用父类成员,使用super.)
ps:两个实例对象方法可以相互访问;
六、方法重写:
在继承关系中,子类出现了和父类中一模一样的方法声明,称子类这个方法是重写的方法——当子类需要此功能,但父类的功能不能完全满足需求时,子类重写父类的方法。
@Override重写注释——放在重写后的方法上,作为重写是否正确的校验注解。(加上后如果重写错了会报错)
ps:重写方法的名称,形参列表必须与被重写的方法两者相同;私有的方法不能被重写;重写方法时,访问权限必须大于或等于父类(public权限最大);子类不能重写父类的静态方法
声明不变,功能重新实现
七、继承后(子类)构造器的特点:(针对无参数构造器)
子类中的所有构造器默认都会访问父类中的无参数构造器,再执行自己。——一定要先初始化父类空间(肯定先有爸爸才有儿子)
原因:子类初始化的时候,有可能要使用到父类的数据,如果父类没有完成初始化,子类将无法使用父类的数据。——子类构造器第一行默认语句都是super(),默认找父类无参数构造器执行
八、子类构造器访问父类的有参数构造器:
作用:直接初始化继承自父类的数据——super(参数,参数);——简化代码,且提高复用性——建议将构造器全部写出来(因为子类默认调用父类的无参数构造器,除非你在super中加变量)
九、总结this和super使用:
this.用来访问本类对象的引用(往往是子类);super.访问父类——ps.this()访问本类中的其他兄弟构造器,借用其他构造器,在借用兄弟构造器的时候能够马上去初始化父亲构造器;super()在本类构造器中指定访问父亲的构造器
两者必须都放在第一行