Father father = new Son();
核心:静态方法是通过类来调用的,不是通过对象来调用的,而非静态方法是通过对象来调用的。
前提(多态):父类(Father)的引用变量 father 指向子类(Son)的实例对象(new Son() )。
所以当父类 Father 的引用变量 father (存在栈中)想要调用子类 Son 重写的非静态方法时,调用的的是Son类在堆中创建的对象(new Son() )中的方法;当父类 Father 的引用 father 想要调用子类Son “重写” 的静态方法时,调用的是 Father 类中的静态方法,不会通过所指向的对象(Son类的对象)来调用,所以static修饰的方法没办法达到重写的目的。