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

一般に、可能な限り疎結合にすることが望ましいです。これは、部分的には、コードが使用するオブジェクトについて可能な限り知識を持たないようにする必要があることを意味します。あなたのコードが であることを知るだけで十分なら、それが であることをコードに知らせるAnimal必要があるのはなぜBearですか? 来週、コードを実行したくなるかもしれませんChicken

によって公開されるインターフェイスに制限するAnimalことで、他の特定の動物をその場所に簡単に配置できるようになり、特定のメソッドを使用していないことがわかりますBear

于 2013-03-10T05:24:37.470 に答える
0

ポリモーフィズムを実現し、クマに固有のものではなく、すべての動物の汎用コードを作成します。

したがって、 Animal animal = new Bear() と同じ参照を使用して、他の異なる動物を指すことができます。

于 2013-03-10T05:24:59.053 に答える
-1

私が見た主な違いは、がオブジェクトであるのに対し、Bear bear = new Bear();オブジェクトとして定義されていることです。このメソッドは新しい Bear を Animal として定義し、もう 1 つのメソッドは新しい Bear を Bear として定義しています。どちらも実質的には同じですが、特定のオブジェクトでが必要な場合は、1 つの方法の方が便利な場合があります。BearAnimal bear = new Bear();Animalnew Bear()

于 2013-03-10T05:24:22.493 に答える