Java多态的编译与运行顺序
先说结论
静态方法与成员变量运行和编译均看“=”左边。
成员方法编译看“=”左边,运行看“=”右边
以下为实验过程:
//这个是父类
public class text1 {
public text1(){}
public String name = "我是父类的成员变量";
public static void cache(){
System.out.println("我是父类的静态方法");
}
public void show(){
System.out.println("我是父类的成员方法");
}
}
//这个是子类
public class text2 extends text1 {
public text2(){}
public String name = "我是子类的成员变量";
public static void cache(){
System.out.println("我是子类的静态方法");
}
public void show(){
System.out.println("我是子类的成员方法");
}
}
以下为实验代码
public class num1 {
public static void main(String[] args) {
//text1为父类
//text2为子类
//正常生成的父类对象
text1 t1 = new text1();
//正常生成的子类对象
text2 t2 = new text2();
//父类的引用,子类的对象
text1 t3 = new text2();
//打印父类的成员变量
System.out.println(t1.name);
//打印子类的成员变量
System.out.println(t2.name);
System.out.println("-------------------------");
//打印父类引用的成员变量
System.out.println(t3.name);
//打印父类的成员方法
t1.show();
//打印子类类的成员方法
t2.show();
System.out.println("--------------------------");
//打印父类引用的成员方法
t3.show();
//结论:父类引用子类对象中
//静态方法与成员变量运行和编译均看“=”左边
//成员方法编译看“=”左边,运行看“=”右边
}
}
运行结果