/*
* this和super的区别
this:当前对象的引用
调用子类的成员变量
调用子类的成员方法
在子类的构造方法第一行调用子类其他构造方法
super:子类对象的父类引用
调用父类的成员变量
调用父类的成员方法
在子类的构造方法第一行调用父类的构造方法
*/
public class Super_this {
public static void main(String[] args) {
Kid k = new Kid(); }
} class Dad {
String name = "dad"; public Dad() {
System.out.println("父类无参构造");
} public Dad(String name) {
System.out.println("父类有参构造");
}
} class Kid extends Dad {
String name = "kid"; public Kid() {
System.out.println("子类无参构造");
} public Kid(String name) {
System.out.println("子类有参构造");
}
}

输出 创建无参对象,使用无参方法(无参第一行未调用,默认执行父类无参)

22.4 Extends --super 和 this 的区别-LMLPHP

2.子类无参第一行调用子类有参,子类无参不会调用父类无参

22.4 Extends --super 和 this 的区别-LMLPHP

输出:子类有参第一行未调用,故先执行父类无参

22.4 Extends --super 和 this 的区别-LMLPHP

3.子类无参第一行调用父类有参

22.4 Extends --super 和 this 的区别-LMLPHP

输出:子类无参第一行已经指定,不会再执行父类无参

22.4 Extends --super 和 this 的区别-LMLPHP

05-28 11:18