2016-08-19 7 views
-2

静的オブジェクトに対する動的バインディングの利点は何ですか? サブクラスのメソッドにアクセスしたい場合は、サブクラス型の参照変数と同じです。サブクラスのメソッドを呼び出し、スーパークラス型の参照変数を使用したい場合、どのようなメリットがありますか? は、なぜ我々が使用する必要があります上記の例ではサブクラス参照を行うときにスーパークラス参照を作成する利点は何ですか

class Human{ 
    public void walk() 
    { 
     System.out.println("Human walks"); 
    } 
} 
class Boy extends Human{ 
    public void walk(){ 
     System.out.println("Boy walks"); 
    } 
    public static void main(String args[]) { 
     //Reference is of parent class 
     Human myobj = new Boy(); 
     myobj.walk(); 
    } 
} 
O/p :Boy walks 

「人間このmyobj =新しいボーイ();」代わりに "Boy myobj = new Boy();"を使うことができます 私の指摘は、サブクラスオブジェクトへのスーパークラス参照の割り当ての使い方です。 私はこれについて本当に混乱しています。あなたが達成したいのかに応じて、どちらか

Human myobj = new Boy(); 

または

Boy myobj = new Boy(); 

を使用することができます。..

+1

あなたは何を意味するの例を挙げることができますか? – bradimus

+0

[デカップリング](http://stackoverflow.com/questions/30784215/what-does-decoupling-two-classes-at-the-interface-level-mean)。 –

+0

こんにちは私は例を追加しました。私はこれに対する答えを見つけることができません。これは重複した質問ではありません。私を助けてください。 – priyanka

答えて

0

を助けてください。 Boyに追加のメソッドがある場合、後者のバージョンを使用するよりも、残りのコードでこのメソッドを呼び出す必要があります。残りのコードがBoy固有のメソッドを呼び出す必要がない場合は、より一般的なスーパークラスを使用することをお勧めします。あなたは残りのコードは、どんな人物で動作することを示し、そのようなので、女の子

Human myobj = new Girl(); 

と少年の簡単な交換が動作します。これには多くの例があります。あなたのコードで

java.util.List 
java.util.ArrayList 
java.util.LinkedList 

、あなたは一般的にはjava.util.Listとして変数を定義し、リストの実装の1つ(またはListインタフェースを実装して他のクラス)のいずれかをインスタンス化する必要があります。この方法を使用すると、Listオブジェクトを作成したときにListインターフェイスの実装を1か所で変更できます。別のList実装を使用する場合、残りのコードでは構文の変更は必要ありません。

+0

ありがとうございます – priyanka

関連する問題