两个不同的子类分配的差异

时间:2012-04-07 16:34:29

标签: java allocation

Animal是Cat类的父类。

public static void main (String[] args)
{
Animal myCat1 = new Cat;  //Allocation 1
Cat myCat2 = new Cat;    //Allocation 2
}

两个分配有什么区别?每个都是真的,不是吗?

3 个答案:

答案 0 :(得分:5)

Animal myCat1 = new Cat();

这称为polymorphism,其中超类引用可以包含子类对象。

阅读Java教程:Polymorphism

答案 1 :(得分:4)

这些都不是有效的。您需要()。除此之外:

  • 第一个通过其超类引用该实例
  • 第二个引用它的类

您可以通过任何超类引用任何对象,最多Object。这是多态性。

答案 2 :(得分:1)

回答你的问题:   没有区别 - 在两种情况下,'new Cat()'都会分配一个Cat类的实例。   两者都是真的 - myCat1是动物(实际上是猫)而myCat2是猫。