1

Animal 是 Cat 类的父类。

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

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

4

3 回答 3

5
Animal myCat1 = new Cat();

这被称为polymorphism超类引用可以包含子类对象的地方。

阅读 Java 教程:多态性

于 2012-04-07T16:37:40.063 回答
4

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

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

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

于 2012-04-07T16:38:33.237 回答
1

回答您的问题:没有区别 - 在这两种情况下,“new Cat ()”都分配了 Cat 类的一个实例。两者都是正确的 - myCat1 是动物(实际上是猫),而 myCat2 是猫。

于 2012-04-07T16:44:18.330 回答