0

我明白为什么这是一个法律声明,但它为什么有用呢?

这与只是去有什么不同:

Bear bear = new Bear(); //?

我可以用对象 Animal bear = new Bear(); 做什么 我不能用后者吗?

尝试澄清:

声明这样的东西有什么实际区别:

A. SuperClass x = new SubClass();

相对,

B. SubClass x = new SubClass();

你可以用 A 中的对象做什么而你不能用 B 做?为什么要声明这样的对象?

谢谢!

4

3 回答 3

4

一般来说,只要有可能,就希望有松散的耦合。在某种程度上,这意味着您的代码应该尽可能少地了解它使用的对象。如果您的代码知道它是 a 就足够了Animal,那么为什么要让它知道它是 aBear呢?下周你可能想用Chicken.

通过将自己限制在由 公开的界面Animal,您现在可以轻松地将任何其他特定的动物放入它的位置,并且您知道您没有使用任何Bear特定的方法。

于 2013-03-10T05:24:37.470 回答
0

实现多态性并为所有 Animals 编写通用代码,而不是具体到熊。

因此,Animal animal = new Bear() 我们可以使用相同的引用来指向其他不同的动物。

于 2013-03-10T05:24:59.053 回答
-1

我想说我看到的主要区别Bear bear = new Bear();是定义为对象Bear,而定义为Animal bear = new Bear();对象Animal。此方法将新熊定义为动物,而另一种方法将新熊定义为熊。两者实际上是同一件事,但是如果您需要new Bear()在特定对象中使用一种方法可能会更有用。

于 2013-03-10T05:24:22.493 回答