众所周知,C#类只能从Single Base类继承它是如何理解的,因为所有类都派生自System.Object?
另外,如果我查看类ValueType定义(例如),我知道它直接从System.Object继承,我发现它只是一个抽象类.我希望看到:公共抽象类ValueType:System.Object
Eri*_*ert 21
众所周知,C#类只能从单个基类继承.
这并不为人所熟知,因为该陈述绝对是错误的.在C#中,类可以从任意多个基类和接口继承成员.
您已经将inherits-members-from-type关系与direct-from- from-type关系混淆了.
实际的规则是除System.Object之外的每个类都直接来自一个类.System.Object的独特之处在于它是唯一一个直接从任何东西派生的类.
每个类和每个接口都可以直接从任意多个接口派生.
类或接口直接或间接地继承它派生的每个类或接口的成员."直接或间接推导"关系是直接推导关系的传递闭包.
Mar*_*ell 12
因为你是从对象间接继承的; 例如
Object <= Foo <= Bar <= Blap
Run Code Online (Sandbox Code Playgroud)
因此,object是所有托管类型的根(但不是所有类型;例如,原始不安全指针不从对象继承).
最容易将继承可视化为层次结构或树.看看这是否有意义:
System.Object
/ \
/ \
/ \
MyProject.SomeClass MyProject.SomeBaseClass
/ \
/ \
/ \
MyProject.SomeDerivedClass MyProject.SomeOtherDerivedClass
Run Code Online (Sandbox Code Playgroud)
看一下MyProject.SomeDerivedClass,你可以清楚地看到它在层次结构中只有一个父类,它的基类,MyProject.SomeBaseClass.现在,MyProject.SomeBaseClass也只有一个父母,System.Object.
虽然MyProject.SomeDerivedClass不直接继承System.Object,但它的父母呢; 父继承或提供的所有内容都会传递给派生对象.因此,即使MyProject.SomeDerivedClass只是直接继承MyProject.SomeBaseClass,它仍然继承,System.Object因为它的父级是这样做的.
| 归档时间: |
|
| 查看次数: |
4252 次 |
| 最近记录: |