Java的。为什么这样做有用:动物熊=新熊();

时间:2013-03-10 05:16:36

标签: oop polymorphism

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

这与刚开始有什么不同:

Bear bear = new Bear(); //?

我该怎么办对象Animal bear = new Bear();我不能用后者做什么?

尝试澄清:

宣布这样的事情之间的实际差异是什么:

A. SuperClass x = new SubClass();

对,

B. SubClass x = new SubClass();

对于A中你不能用B做的对象,你能做些什么?你为什么要声明这样的对象呢?

谢谢!

3 个答案:

答案 0 :(得分:4)

通常,只要有可能,就应该使用松耦合。在某种程度上,这意味着您的代码应该尽可能少地了解它使用的对象。如果您的代码足以知道它是Animal,那么为什么要让它知道它是Bear?下周,您可能希望使用Chicken运行代码。

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

答案 1 :(得分:0)

实现多态性并为所有动物编写通用代码,而不是具体承担。

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

答案 2 :(得分:-1)

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