2017-12-12 27 views
0

オブジェクト私は今、Javaの継承を学んだし、私は問題があります:私はこれらのクラスを使用すると「B」を作成したい場合は、新しいJavaを作成

public class A{ 
    //code of class A 
} 
public class B extends A{ 
    //code of class B 
    //code in B rewrite some methods in A 
} 

と:2つのクラスが存在している場合 を私のクライアントプログラムのオブジェクト。

A objectName = new B(); 

B objectName = new B(); 

の間に違いはありますか?

ありがとうございました。

+1

'のobjectName =新しいB();'だけがA' 'によって定義されたプロパティとメソッドにアクセスすることを可能にする - これは、多型の一部である – MadProgrammer

+0

最初はまた、別のサブクラスの中で簡単に交換が可能になります、例えばCはAを延長する。パフォーマンスや実装上の理由から、コードがまだ動作していることを確認します – SteveR

答えて

0

は、このリンクを見てみましょう、それが役に立つかもしれません:あなたが継承されたオブジェクトを使用する場合 Polymorphism: Why use "List list = new ArrayList" instead of "ArrayList list = new ArrayList"?

私自身の言葉で助けるために、基本的には、それが簡単にすべての子供たちの間の変換に対処することができます親オブジェクトの各オブジェクトに固有のメソッドを使用できるようにします。

乾杯!

0

これは多型です。最初のもので :

A objectName = new B(); 

できるのは、このような変更、基本型を気にすることなくobjectNameでrefferedオブジェクトを変更する:あなたは、すべてを保存することができ、親タイプでオブジェクトをインスタンス化することによって

objectName = new ChildOfA(); 

コンテナの子オブジェクトとして長くそれは親の型を使用して作成されるよう('A')

例:

List container = new ArrayList<A>(); 
container.add(new B()); 
container.add(new ChildOfA()); 

これは許可されていません。その結果、柔軟性に欠けます。

container = new ArrayList<B>(); 
container.add(new ChildOfA()); //error because childOfA is not of type of B 
関連する問題