Java 继承加载顺序 以及 多态中变量和方法

很基础总是忘 记录一下

Java 继承加载顺序 

class Test0 {
    public static String staticField = "父类-静态变量";
    public String field = "父类-普通变量";
    public Test0() {
        System.out.println("父类-构造器");
    }
    static {
        System.out.println(staticField);
        System.out.println("父类-静态初始化块");
    }
    {
        System.out.println(field);
        System.out.println("父类-初始化块");
    }
}
public class Test1 extends Test0{
    public static String staticField = "子类*静态变量";
    public String field = "子类*普通变量";
    static {
        System.out.println(staticField);
        System.out.println("子类*静态初始化块");
    }
    {
        System.out.println(field);
        System.out.println("子类*初始化块");
    }
    public Test1() {
        System.out.println("子类*子类构造器");
    }
    public static void main(String args[]) {
        System.out.println("main方法");
        Test1 test1 = new Test1();
    }
}
输出结果为:

父类-静态变量
父类-静态初始化块
子类*静态变量
子类*静态初始化块
main方法
父类-普通变量
父类-初始化块
父类-构造器
子类*普通变量
子类*初始化块
子类*子类构造器

多态中变量和方法

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Father f = new Sons();
        System.out.println("f.var=" + f.var);
        System.out.println("f.staticVar=" + f.staticVar);
        
        Sons ff=(Sons)f;
        System.out.println("ff.var=" + ff.var);
        System.out.println("ff.staticVar=" + ff.staticVar);
        
        f.method();
        f.staticMethod();
    }
结果:

f.var=FatherVar
f.staticVar=StaticFatherVar
ff.var=SonVar
ff.staticVar=StaticSonVar
Son method
Static Father method


你可能感兴趣的:(Java 继承加载顺序 以及 多态中变量和方法)