2012-02-13 7 views
0

今、私はクラスの継承とオブジェクトと混同しています。継承と同じようにオブジェクトを使って同じことを行うことができます。ここで[OK]を は、最初のコードは1クラスを拡張するのはなぜですか?

public class MainForm extends GUI { 
    //GUI g = new GUI(); 
    void show(); 
    void destroy(); 
} 
class GUI { 
    void show(){ 
     ...... 
    }  
    void destroy(){ 
     ...... 
    } 
} 

public class MainForm { 
    GUI g = new GUI(); 
    g.show(); 
    g.destroy(); 
} 
class GUI { 
    void show(){ 
     ...... 
    }  
    void destroy(){ 
     ...... 
    } 
} 

今秒で両方のコードsame.Rightしますか? クラスのオブジェクトを使って同じことをすることができるときに、クラスを拡張する必要があるのはなぜですか?

+6

あなたは何を意味しているのでしょうか? IMHO私は質問が非常に明確だとは思わない... –

+0

今私はあなたの質問と混同しています。 – Bernard

+0

最も重大な理由の1つは、コードの重複を避けることです。 –

答えて

2

多くのロジックを複製することなく、親クラスの複数のクラスを作成する場合に継承がよく使用されます。私は、方法speak(),walk()、およびsleep()を持つAnimalというクラスを持つかもしれません。私はまたAnimalの特定のインスタンスをCatDogのようにしたいかもしれません。

むしろ個別にそれらのメソッドのすべての3つを実装するよりも、私はAnimalでそれらを書き、その後、私の他のクラスは、それらを活用するだけでなく、それらのクラス(のようなclaw()またはfetch())に固有のメソッドを追加するために動物を拡張することができます。

利点は、コードの複製とオブジェクトのより良い「抽象化」の削減です。しかし、このarticleが指摘しているように、いくつかの欠点もあります。継承が有用であるときとそうでないときを知ることは重要です。

関連する問題