C# 为什么对象(根)类不冲突多重继承
我们知道.Net不支持多重继承。因此,我们只能继承一个类。但默认情况下,每个类都继承“object”类。所以,当我继承任何其他类时,为什么不发生错误呢C# 为什么对象(根)类不冲突多重继承,c#,.net,oop,C#,.net,Oop,我们知道.Net不支持多重继承。因此,我们只能继承一个类。但默认情况下,每个类都继承“object”类。所以,当我继承任何其他类时,为什么不发生错误呢 例如A-基类,B-派生类。当我使用A:B时,隐式对象类也被继承为(我认为)A:B,object。如果.Net不支持多重继承,怎么可能呢。不,不是这样的-只有一个继承链,那就是: __________ | Object | ---------- ^ | __________ | A | ---------- ^
例如A-基类,B-派生类。当我使用A:B时,隐式对象类也被继承为(我认为)A:B,object。如果.Net不支持多重继承,怎么可能呢。不,不是这样的-只有一个继承链,那就是:
__________
| Object |
----------
^
|
__________
| A |
----------
^
|
__________
| B |
----------
任何一个类只有一个直接基类,但类的继承链可能很长
举个例子说明为什么这与直接从
A
继承的B
不同,如果A
覆盖ToString
,则B
无法调用对象.ToString()的原始实现-它只能调用A
的版本(当然,还要重写ToString
本身)。很简单,声明的类只有在不从另一个类继承的情况下才从对象继承。编译器所做的是有效地更改
public class MyBaseLessClass
{
}
到
因此,每个类都有一个继承自的类。(有点像:)将对象视为其他所有类的父类。A班是孩子,B班是孙子。B只有一个父类,它是A&对象是B的父级。
public class MyBaseLessClass : object
{
}