一.super关键字的用法有三种:
1.在子类的成员方法种,访问父类的成员变量(重名或不重名)。
public class Fu3 { int num = 10; }
public class Zi3 extends Fu3{ int num = 20; public void method(){ System.out.println(num); // 20 就近原则 System.out.println(super.num); // 10 父类的成员变量 } }
2.在子类的成员方法种,访问父类的成员方法(重名或不重名)。
public class Fu3 { int num = 10; public void method(){ System.out.println("父类的成员方法"); } }
public void method2(){ method(); // 就近 super.method(); // 父类 }
3.在子类的构造方法中,访问父类的构造方法。
总结:super关键字是用来在子类访问父类的内容的,this关键字是在本类的内容的。
二.this关键字的用法有三种:
1.在本类的成员方法中,访问本类的成员变量(重名或不重名)。
int num = 10; public void method(){ int num = 20; System.out.println(num); // 20 局部变量 System.out.println(this.num); // 10 本类的成员变量 }
2.在本类的成员方法中,访问本类的另一个成员方法。
public void methodA(){ System.out.println("AAA"); } public void methodB(){ methodA(); // 可以直接调用 this.methodA(); System.out.println("BBB"); }
3.在本类的构造方法中,访问本类的另一个构造方法。
public Demo04Constructor() { // super(); // 这一行不再赠送 this(123); // 这是本类的无参构造方法,调用本类的有参构造 System.out.println("无参构造方法"); } public Demo04Constructor(int n) { System.out.println("有参构造方法"); }
注意:
扫描二维码关注公众号,回复:
12567441 查看本文章
A.在第三种英法当中要注意,this(...)调用必须是构造方法的第一个且唯一的语句。
B.super和this两种构造调用,不能同时使用,因为它们都要求是唯一的第一个。