class classA{ public String str = "classA"; public static void say(){ System.out.println("classA method"); } } class classB extends classA{ public String str = "classB"; public static void say(){ System.out.println("classB method"); } } public class SubclassTest { public static void main(String args[]){ ((classA)new classB()).say(); System.out.println(((classA)new classB()).str); } }
上述程序将打印出
classA method
classA
如果say()方法不是静态的话,将打印出classB method
静态方法是在编译器就确定的,而不是运行时动态选择
实例变量也是如此。