Java super与this
一、super()与this()
1、super():
- 只能出现在子类构造器中
- 且必须位于第一行。
- 所有子类构造器默认调用super()方法
- 参数决定使用父类哪一个构造器。
-
- 若父类没有相应的构造器,则报错。
2、this():
-
- 只能出现在本类的构造器中
- 且必须位于第一行
- 用于调用本类中其他构造方法
- 不能与super()同时出现在一个构造方法中
二、super、this关键字
1、this
-
- 指向当前对象本身
- 形参与成员名重名,用于区分
- this()
2、super
-
- 指向本类的引用
- 子类的成员变量或方法与父类中的成员变量或方法重名,用于区分
- super()
- 指向本类的引用
三、特别说明
1、子类继承父类所有的属性和方法(构造方法除外;private可以说没有继承,也可以说继承了但是没有访问权限)
2、子类实例化时,先实例化父类再实例化子类自己(先调用父类构造器,再调用子类构造器)
3、在子类中创建构造器时,必须调用父类的构造器(默认调用父类的无参构造器)。
4、static环境中不可在使用this、super关键字
四、代码
public class Demo1 { static int value = 9; // 注意value是静态的成员变量 public static void main(String[] args) throws Exception { new Demo1().printValue(); } private void printValue() { int value = 69; System.out.println(this.value); } } 结果: 9