1.this和super的区别
this 代表的是本类对象的引用,谁调用,就代表谁;
super代表的是父类存储空间的标识(可以理解成父类的引用,可以操作父类的成员)
2.this和super的使用
2.1:调用成员变量
this.成员变量 调用本类的成员变量
super.成员变量 调用父类的成员变量
2.2:调用构造方法
this(…) 调用本类的构造方法
super(…) 调用父类的构造方法
2.3:调用成员方法
this.成员方法 调用本类的成员方法
super.成员方法 调用父类的成员方法
具体举例如下:
public class MyTest {
public static void main(String[] args) {
//当我去创建子类对象时,为什么要先要执行父类的构造方法?
//因为子类要继承父类的数据,甚至还要去使用父类的数据,所以先要完成父类数据的初始化。
Zi zi = new Zi();
//每个类的构造方法的第一行,有一条默认语句 super() 在去调用父类的空参构造
//假如,父类就没有空参构造,只有有参构造,我们在创建子类对象:可以调用父类有参构造;
//Java的继承体系当中,有一个顶层父类Object。所有的类,都是直接或间接继承自他
new Zi(20);
}
}
class Fu extends Object{
int num=100;
public Fu() {
super();
System.out.println("父类的空参构造执行了");
}
public Fu(int num) {
System.out.println("父类的有参构造执行了"+num);
}
}
class Zi extends Fu{
public Zi() {
super(); //调用父类的空参构造
System.out.println("子类的空参构造执行了");
}
public Zi(int b) {
super(100);
System.out.println("子类的有参构造执行了");
}
}
故而执行结果如下: