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
静态方法是在编译器就确定的,而不是运行时动态选择
实例变量也是如此。