如果我在Java中有一个子类,并且由于某种原因(父和子)都必须有相同的变量(String department
),那么如果我创建一个像这样的实例:
Parent var1 = new Son();
System.out.println(var1.department);
这将打印Parent.department
中的值。但是如果我有一个方法getDepartment()
被覆盖(在两个类中),那么
System.out.println(var1.getDepartment());
这将打印从Son.getDepartment
返回的内容。
那么,为什么虚方法调用不能以相同的方式应用于变量?
为什么有必要按照以下方式进行Downcast,以便从Son Class而不是Parent类中获取变量
Parent var1 = new Son();
Son varSon = (Son)var1;
System.out.println(varSon.department);
现在以这种方式执行将打印Son.department
中的值。