2017-01-10 2 views
0

ParentObj A = new ChildObj(); ((ChildObj) A).childMethod();オブジェクトをキャストするオブジェクト指向プログラミングで、スーパークラスとサブクラスを変数にインスタンス化するのはなぜですか?例えばのために

私はそれだけでChildObj A = new ChildObj()としての代わりの作成のスターターとして親オブジェクトを使用してChildObjを宣言するために容易になるだろう、オブジェクト指向プログラミングでは、このような事例の多くを参照してくださいオブジェクト?

オブジェクト指向プログラミングに対して、この例の使用例はどのようになりますか?

また、Aオブジェクトはこの宣言またはParentObjのChildObjになりますか?

このようにしたり、ユースケースベースのものがあれば、パフォーマンスの向上がありますか?

ありがとうございます。

+1

[インターフェイスへのプログラムとはどういう意味ですか?](http://stackoverflow.com/questions/383947/what-does-it-mean-to-program-to-an-interface) – khelwood

+3

あなたが見ていることは良い例ではありません。誰かが明確に考えていないことの結果です。それをChildObjとして宣言する方が良いでしょう。 –

+0

ありがとう、私はdoable、なぜ私は尋ねたが、これはたくさんのことに不思議です。また、インターフェイスについて知っているが、それは意味をなさないだろうが、宣言に一般的な意味を持つ具体的なクラスは避けているようだ。子クラスの配列をループするために使用できますか?最初に親クラスとして宣言するのが簡単で、後でキャストすることで何かを行うだけですか? mmmm – Chopnut

答えて

1

その

ParentObj A =新しいChildObj()のように、そのような宣言のないユースケースが存在しないというのが私の個人的な意見と、主にその真。我々は、オブジェクトが我々が実際の子クラスの詳細 を知らない

  • を初期化する方法を、知らない

    • 以下の例では、親の参照の下に子オブジェクトを非表示に使用

  • 同じ親クラスの複数の子クラスがあり、オーバーライドされた関数に焦点を当てたいだけです
  • 私たちは契約を結んでおり、契約を満たす関数を使用しています(インターフェイスシナリオ)
  • これはいくつかの使用例です。

    関連する問題