super是直接父类对象的引用。可以通过super来访问父类中被子类覆盖的方法或属性。
使用super调用普通方法,语句没有位置限制,可以在子类中随便调用。若是构造方法的第一行代码没有显示的调用super(…)或者this(…)那么Java默认都会调用super()含义是调用父类的无参构造方法,这里的super可以省略。
-
构造方法调用顺序:
构造方法第一句总是:super(…)来调用父类对应的构造方法。所以,流程就是:先向上追溯到Object,然后再依次向下执行类的初始化块的构造方法,直到当前子类为止。
注:静态初始化块调用顺序,与构造方法调用顺序一样,不再重复。 -
访问控制符
1.private表示私有,只有自己能访问
2.default表示没有修饰符修饰,只有同一个包的类能访问
3.protected表示可以被同一个包的类以及其他包中的子类访问
4.public 表示可以被该项目的所有报的所有的类访问public class test { //程序执行入口,必须要有 public static void main(String[] args){ new ChildClass().f(); } } class FatherClass{ public int value; public void f() { value = 100; System.out.println("FatherClass.value="+value); } } class ChildClass extends FatherClass{ public int value; public void f() { super.f();//调用父类对象的普通方法 value = 200; System.out.println("ChildClass.value="+value); System.out.println(value); System.out.println(super.value);//调用父类对象的成员变量 String str; } } -------------------------------------------------------------------- 输出结果: FatherClass.value=100 ChildClass.value=200 200 100