1. super“可以看做”是直接父类对象的引用。可通过super来访问父类中被子类覆盖的方法或属性,这就是super关键字的作用。
在Java 学习和实践笔记(24):方法重写(override)-CSDN博客中提到,子类可以重写父类的方法,当调用时,会优先调用子类重写的方法,父类的方法,就是就被覆盖了。这里就是可以通过super,来访问父类中被覆盖或者说被包住了的方法或属性。
2.使用super调用普通方法,语句没有位置限制,可以在子类中随便调用。、
3.在一个类中,若是构造方法的第一行没有调用super(..)或者this(.);那么Java默认都会调用super(),含义是调用父类的无参数构造方法。
4.如上图示,外部的类,是不能通过super往上调各级父类的。它只能在子类里调用。
代码示例:
public class TestSupper01 {
public static void main(String[] args) {
new ChildClass().f();
new ChildClass().f2();
}
}
class FatherClass {//创建一个父类
public int value;
public void f(){//定义父类中的一个方法
value = 100;
System.out.println("父类的值"+value);
}
}
class ChildClass extends FatherClass{ //创建一个子类
public int value;//子类中可以同样有与父类同名的value属性
public int age;
public void f(){//这相当于重写父类中的方法
super.f();//使用super直接调用父字的方法
value = 200;
System.out.println("子类的值"+value);
System.out.println(value);
System.out.println(super.value);
}
public void f2(){
age =18;
System.out.println(age);
}
}