因为当类加载进来,父子类方法都存在,而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"); }}