多态是指方法或对象吗?

时间:2018-03-14 05:04:12

标签: java inheritance polymorphism

所以我是Java的初学者,在阅读一本书时,我对多态性有疑问。似乎有两个不同的多态性含义:一个是继承层次结构的多态性(如类型兼容性),另一个是选择在运行时调用的正确方法,因为不同的继承级别可能有不同的重写方法。在谈论多态时,人们会提到哪一个?或者它是两者的总称?

类型兼容性的示例类似于

Animal a = new Mammal();

或者

ArrayList<Animal> animalList = new ArrayList<Animal>();
animalList.add(0, new Mammal());
animalList.add(1, new Vertebrate());

而在运行时选择动态绑定方法就像

Student s = null;
Student g = new Graduate();
Student u = new UnderGrad();
... (after reading user input, call a method based on what the user chooses)
if(inputstr.equals("g"))
     s = g;
else if(inputstr.equals("u"))
     s = u;
else
     s = new Student();
s.displayGrade(); //this method is different based on if they are undergrad, grad, or student

2 个答案:

答案 0 :(得分:-1)

多态行为适用于对象而非方法

答案 1 :(得分:-1)

我们确实将两者都称为多态性。原因是,“聚合物”一词是指&#39;意味着“很多人”。和&#39; Morpheus&#39;存在。它只是意味着,任何可以以多种形式存在的东西都倾向于具有多态性。

  

另一个是选择正确的方法在运行时调用,如   不同的继承级别可能有不同的重写方法。

在开始时,我们习惯只将称为多态的方法称为术语。但是由于Java的发展,我们在商店中有新的东西,其中之一是,

ArrayList<Animal> animalList = new ArrayList<Animal>();
animalList.add(0, new Mammal());
animalList.add(1, new Vertebrate()); 

解释了你的

  

一个是继承层次结构的多态性(如类型   兼容性),

后者本质上也是多态的。 [对此有一些限制,因为你是初学者,你可以深入研究这一点。 参考文献:Head First Java]

对问题的回答将是&#34;多态性是对象而不是方法&#34;。一种方法与多态性无关。一个Object里面有方法。 [假设,仅供您理解] 。在运行时,JVM决定调用哪一个。请仔细阅读我告诉你的那本书。会帮到你。