小编Mic*_*Lai的帖子

Java访谈后的反思:继承和多态

以下代码:

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)

java polymorphism inheritance

1
推荐指数
1
解决办法
750
查看次数

标签 统计

inheritance ×1

java ×1

polymorphism ×1