因为当类加载进来,父子类方法都存在,而test.test 中 test是Fu 即:类名.静态方法名 Fu.test
其实就是 静态调用的原理:类名.方法名 依赖左边的类引用,不依赖对象
编译时:参考引用型变量所属的类中是否有调用的静态方法
运行时:参考引用型变量所属的类中是否有调用的静态方法
简单说,编译和运行都看左边
其实关于静态,是不需要对象的,直接用类名调用即可
package Polymorphic;
public class day_4_7 {
public static void main(String[] args) {
Fu test = new Zi();
//输出:Fu
test.test();
}
}
class Fu{
static void test(){
System.out.println("Fu");
}
}
class Zi extends Fu{
static void test(){
System.out.println("Zi");
}
}