以下代码:
class Base{}
class Agg extends Base{
public String getFields(){
String name="Agg";
return name;
}
}
public class Avf{
public static void main(String args[]){
Base a=new Agg();
//please take a look here
System.out.println(((Agg)a).getFields()); // why a needs cast to Agg?
}
}
Run Code Online (Sandbox Code Playgroud)
我的问题是:为什么我们不能代替 ((Agg)a).getFields() 到a.getFields()?为什么我们需要输入强制类型a?我提到它getFields()没有在类中定义Base,因此类Agg不会从它的基类扩展此方法.但是如果我getFields()在课堂上定义了方法 Base,比如:
class Base{
public String getFields(){
String name="This is from base getFields()";
return name;
}
}
Run Code Online (Sandbox Code Playgroud)
一切都会好的.然后 ((Agg)a).getFields()相当于a.getFields()
在代码中
Base a=new Agg(); …Run Code Online (Sandbox Code Playgroud)