ご存知のように、.Netは多重継承をサポートしていません。したがって、継承できるクラスは1つだけです。ただし、デフォルトでは、すべてのクラスが'object'クラスを継承します。それで、他のクラスを継承するときにエラーが発生しないのはなぜですか。
たとえば、A-基本クラス、B-派生クラス。A:Bを使用すると、暗黙的にオブジェクトクラスも(私が思うに)A:B、Objectとして継承されます。.Netが多重継承をサポートしていない場合、どうすれば可能になりますか。
いいえ、そうではありません。継承チェーンは1つだけで、次のようになります。
__________
| Object |
----------
^
|
__________
| A |
----------
^
|
__________
| B |
----------
1つのクラスには直接基本クラスが1つしかありませんが、クラスの継承チェーンは長くなる可能性があります。
これがから直接継承することと同じではない理由の例として、オーバーライドする場合、の元の実装を呼び出す方法はありません-バージョンを呼び出すことしかできません(もちろん、それ自体をオーバーライドすることもできます)。B
A
A
ToString
B
Object.ToString()
A
ToString
簡単です。宣言されたクラスは、別のクラスから継承しない場合にのみ継承します。object
コンパイラが行うことは、それが効果的に変化することです
public class MyBaseLessClass
{
}
に
public class MyBaseLessClass : object
{
}
そのため、すべてのクラスには、継承元のクラスが1つだけあります。(床屋のパラドックスに少し似ています:))