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()在本类构造器中指定访问父亲的构造器

  两者必须都放在第一行

posted @ 2022-04-25 17:12  dreamLucode  阅读(33)  评论(0编辑  收藏  举报