super关键字
super关键字:是直接直接父类对象的引用,可以用super访问父类中被子类覆盖的方法和属性,this指的是当前对象,而super指的是父类
继承树
1.属性或方法查找顺序:
1.1查找当前类中有没有h属性
1.2依次到每个父类,查看每个父类中,是否有h,知道Object.
1.3如果没有找到,则出现编译错误
1.4上面步骤,只要找到h变量,则这个过程终止。
2.构造方法调用顺序:
构造方法第一句总是:super()来调用父类对应的构造方法。流程就是先追溯到Object,然后依次向下执行
类的初始化和构造方法,直到当前子类为止(静态初始化块调用也一样)。
super()方法是默认存在于构造方法中的首句中
如:
class Fatherclass extend Faction{
public int value;
public void f() {
//super(); //默认存在
value = 100;
System.out.println("Fatherclass.value"+value);
}
}
调用举例:
public class _05_Super {
public static void main(String[] args) {
// TODO Auto-generated method stub
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("Fatherclass.value"+value);
System.out.println(value);
System.out.println(super.value); //调用父类对象的成员变量
}
}
super后加参数的是用来调用父类中具有相同形式的 构造函数,即调用父类对象的普通方法。