编程语言
首页 > 编程语言> > Java中的上传问题?

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,polymorphism,upcasting
来源: https://codeday.me/bug/20190610/1210272.html