Java中的上传问题?

有人可以解释为什么会发生这种情况:

class Apple {

   String type;

   setType(){
      System.out.println("inside apple class");
      this.type = "apple";
   }

}

class RedApple extends Apple {

    String type;

    setType() {
      System.out.println("inside red-apple class");
       this.type = "redapple";
    }
}

int main {

    RedApple red = new RedApple();
    Apple apple = (Apple) red;
    apple.setType();

}

但产生的输出是:

"inside red-apple class”

为什么.setType()方法执行子类方法,而不是超类方法,即使我正在上传,可以看出?

解决方法:

那是因为多态性在Java中是如何工作的:它总是使用方法的最衍生版本,它会覆盖其他版本.获取基类版本的唯一方法是在派生最多的覆盖中使用super.setType.

上一篇:Java中的继承和多态


下一篇:处理超载的最“Pythonic”方式