这里讨论的是static方法不能发生多态.值得注意的是, 所谓的static方法不能多态指的是:override的方法本身是不是static的,而不是指调用override方法的方法是不是static 的!比如以下程序:
class Father {
public void act() {
System.out.println("Father.act()");
}
}
class Son extends Father {
public void act() {
System.out.println("Son.act()");
}
}
public class Test {
public static void test(Father i) { //static方法
i.act();
}
public static void main(String[] a) {
Son son = new Son();
test(son);
=====了解上面的知识后,你可能会发现有一个特例:在编程思想第四版P157上,(还有很多地方都曾经说过)构造器隐式的就是static的!然而在构造器内部为什么可以直接调用非静态方法??
所谓显式隐式static,是指类在实例化时,系统会执行的代码
比如
public class StaticTest {