众所周知,.Net 不支持多重继承。因此我们只能继承一个类。但默认情况下,每个类都继承“对象”类。那么为什么当我继承任何其他类时不会发生错误。
例如 A- 基类,B- 派生类。当我使用A:B时,隐式对象类也被继承为(我认为)A:B,Object。如果.Net 不支持多重继承,这怎么可能。
不,不是那样的——只有一个继承链,它是:
__________
| Object |
----------
^
|
__________
| A |
----------
^
|
__________
| B |
----------
任何一个类只有一个直接基类,但类的继承链可以很长。
例如,为什么这与直接继承不同,如果overrides ,则无法调用的原始实现- 它只能调用's 版本(当然,并覆盖自身)。B
A
A
ToString
B
Object.ToString()
A
ToString
很简单,声明的类只有object
在它不从另一个类继承时才继承。编译器所做的是它有效地改变
public class MyBaseLessClass
{
}
至
public class MyBaseLessClass : object
{
}
这样每个类都有一个它继承自的类。(有点像理发师悖论:))