2009-08-26 5 views
0

私はフレームワークを扱っていますが、時にはクラスのオーバーロードによっていくつかのメソッドを変更する必要があります。OOP - 子とその親クラスを同時にオーバーロードしていますか?

クラスBがクラスAを継承し、私はそれらの両方をオーバーロードする必要がどことき私の問題は、例えば、次のとおりです。

class B extends A {} 

まず、私は彼らの方法の一部を変更するために、AとBをオーバーロード: BBのために何をすべきか、その後

class AA extends A {} 
class BB extends B {} 

しかし、は( '< - ' 手段を拡張する)他の人の言葉ではAA

から延び:

class B <--- class A 
^   ^
    |    | 
    |    | 
class BB <-?- class AA 

答えて

1

はいを​​探しているかもしれないと思います。これはTraitsまたはコンポジションが再生される場所です。

基本的に、プログラミングコンセプトの特質は、どのクラスにも含めることができる機能のグループです。あなたのクラスに追加できる機能のセットとしての特質を考えてみましょう。

0

あなたが達成したいことは多重継承と呼ばれますが、PHPやその他の最近の言語ではサポートされていません。多重継承を使用する正当な理由はほとんどありません。混乱する可能性があるため、一般的には嫌われます。

前述したように、あなたはワット・スルー・コンポジションであなたが望むものを達成することができますが、クラスについての詳細がなければ、エイミーに特別なアドバイスを与えることは不可能です。

0

大まかに言えば、継承よりも構図が優先されます。そのように思考し、ほぼ常に構成を使用するようになると、継承を使用するかどうかの決定はかなり明白になります。

関連する問題