1,继承关系图(this与super)
当子类创建对象后,该子类对象本身可以使用this来指代,而该对象当中的父类对象空间可以使用super来指代。
如下为加入了子父类关系后的对象内存图。
以Person类为例:
定义父类
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Person {
private String name;
private int age;
}
定义子类
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Chinese extends Person{
private Stirng address;
定义测试类,使用子类创建对象
public class Test{
Chinese c = new Chinese();
}
继承后对象内存图
2,this与super调用普通成员与构造方法
-
调用普通成员
this.成员变量 可以访问本类对象的成员变量
super.成员变量 可以访问父类对象的成员变量
this.成员方法() 可以访问本类对象的成员方法
super.成员方法() 可以访问父类对象的成员方法 -
调用构造方法
this(其他参数) 可以访问本类其他的构造方法
super(其他参数) 可以访问父类其他的构造方法 -
默认子类调用父类构造方法
子类的每个构造方法中均有默认的super(),调用父类的空参构造。手动调用父类构造会覆盖默认的super();