日期:2014-05-20  浏览次数:20655 次

java多态问题?菜鸟,求各位大神指点!
请看程序代码:
public class Father {
String var="Father";
static String staticVar="FatherStatic";
public void method(){
System.out.println("Father");
}

}

public class Son extends Father{
String var="son";
static String staticVar="sonstatic";
public void method(){
System.out.println("Son");
}

}


public class Test01 {
public static void main(String[] args) {
Father f=new Son();
System.out.println(f.var);
System.out.println(f.staticVar);
f.method();
}

}

为何结果是:Father
FatherStatic
Son
前两个显示的为何是父类的成员变量,而不是子类的,为何方法打印的值是子类的??
菜鸟求指点???











------解决方案--------------------
多态的3要术是父类引用指向之类对象,方法重写,和继承,你的f.var和f.staticVar有没有方法重写?所以不是多态,而f.method();有了方法重写所以多态
------解决方案--------------------
Father f=new Son(); 是父类的引用指向子类对象 所以 f.var 的值是 Father, f.staticVar的值为FatherStatic
而子类将父类的method() 重写所以打印出来的应该是 Son