6

众所周知,.Net 不支持多重继承。因此我们只能继承一个类。但默认情况下,每个类都继承“对象”类。那么为什么当我继承任何其他类时不会发生错误。

例如 A- 基类,B- 派生类。当我使用A:B时,隐式对象类也被继承为(我认为)A:B,Object。如果.Net 不支持多重继承,这怎么可能。

4

2 回答 2

13

不,不是那样的——只有一个继承链,它是:

__________
| Object |
----------
    ^
    |
__________
|   A    |
----------
    ^
    |
__________
|   B    |
----------

任何一个类只有一个直接基类,但类的继承链可以很长。

例如,为什么这与直接继承不同,如果overrides ,则无法调用的原始实现- 它只能调用's 版本(当然,并覆盖自身)。BAAToStringBObject.ToString()AToString

于 2012-09-25T06:52:47.330 回答
3

很简单,声明的类只有object在它不从另一个类继承时才继承。编译器所做的是它有效地改变

public class MyBaseLessClass
{
}

public class MyBaseLessClass : object
{
}

这样每个类都有一个它继承自的类。(有点像理发师悖论:))

于 2012-09-25T06:56:19.887 回答