0

トピック: 次の例のポリモーフィズムと絶望を理解しようとしています (最初のクラスは基本クラスで、2 番目のクラスは派生クラスです)。

コード:

Dim Class2 as new SecondClass()

に変更されます

Dim Class2 as FirstClass
Class2 = New SecondClass()

質問: これは、OOP の最も強力なツールの 1 つである「VB.NET Developer Book」の著者によるものです。しかし、なぜ?誰かが私にそれを説明できますか?

Class2 を FirstClass として宣言し、この objectvariable を SecondClass のインスタンスに割り当てる必要があるのはなぜですか?

4

2 に答える 2

0

簡単な答え: SecondClass オブジェクトを FirstClass オブジェクトだけを知っている関数に渡すことができるため、特殊化されたメソッドの SecondClass 動作を取得できます。

長い答え: ポリモーフィズムにより、さまざまなデータ型に関連付けられた特別な機能を、高度に保守可能で再利用をサポートする方法でキャプチャできます。その特殊なロジックを取得する代わりに、OtherFunction が if-then を使用してデータ型を検査し、各オブジェクトで適切なメソッドを呼び出して、状況に応じた "正しい" 動作を取得することもできます。

if (dataObject.GetType().Name == "FirstClass")
{
    dataObject.FirstMethod();
}
else if (dataObject.GetType().Name == "SecondClass")
{
    dataObject.FirstMethod();
    dataObject.SecondMethod();
}
于 2013-10-30T13:37:12.033 に答える
0

変数を使用した例は、この概念を理解するのに最適なものではありません。ポリモーフィズムは、一般的な形式 (BaseClass) にバインドされたアルゴリズムを作成できると同時に、この形式から派生した任意のオブジェクトで実行できるため、強力です。
整数をソートするアルゴリズムを考えてみてください。アイテムを並べ替えるときの重要なステップは、それらを比較することです。これは、整数の特定の実装を作成する方法で実装できます。このアルゴリズムは整数のみで機能し、それ以外は機能しません。

Public Function Sort(l As List(Of Integer)) As List(Of Integer)

しかし、同じタイプの別のオブジェクトと比較できる任意のオブジェクトで実行できるようにアルゴリズムを定義すると、アルゴリズムははるかに用途が広くなり、簡単に減らすことができます。この場合、IComparable などのインターフェイスを定義し、代わりにこのインターフェイスでアルゴリズムを動作させます。次に、このアルゴリズムを使用して、IComparable を実装するオブジェクトの任意のコレクションを並べ替えることができます。

Public Function Sort(l As List(Of IComparable)) As List(Of Integer)
于 2013-10-30T13:43:09.827 に答える