inheritance自System.Object
众所周知,C#类只能从Single Base类inheritance它是如何理解的,因为所有类都派生自System.Object?
另外,如果我查看类ValueType定义(例如),我知道它直接从System.Objectinheritance,我发现它只是一个抽象类。 我希望看到:public abstract class ValueType:System.Object
最容易将inheritance可视化为层次结构或树。 看看这是否有意义:
System.Object / \ / \ / \ MyProject.SomeClass MyProject.SomeBaseClass / \ / \ / \ MyProject.SomeDerivedClass MyProject.SomeOtherDerivedClass
查看MyProject.SomeDerivedClass
,您可以清楚地看到它在层次结构中只有一个父级,即它的基类MyProject.SomeBaseClass
。 现在, MyProject.SomeBaseClass
也只有一个父系统System.Object
。
虽然MyProject.SomeDerivedClass
不直接从System.Object
inheritance,但它的父System.Object
; 父inheritance或提供的所有内容都会传递给派生对象。 因此,即使MyProject.SomeDerivedClass
仅直接从MyProject.SomeBaseClass
inheritance,它仍然inheritance自System.Object
因为它的父System.Object
。
众所周知,C#类只能从单个基类inheritance。
这不是众所周知的,因为该陈述绝对是错误的。 在C#中,类可以从任意多个基类和接口inheritance成员。
您已经将inherits-members-from-type关系与direct-from- from-type关系混淆了。
实际的规则是除System.Object之外的每个类都直接来自一个类。 System.Object的独特之处在于它是唯一直接从无任何内容派生的类。
每个类和每个接口都可以直接从任意多个接口派生。
类或接口直接或间接地inheritance它派生的每个类或接口的成员。 “直接或间接推导”关系是直接推导关系的传递闭包 。
因为你是从对象间接inheritance的; 例如
Object <= Foo <= Bar <= Blap
因此,object是所有托管类型的根(但不是所有类型;例如,原始不安全指针不从对象inheritance)。
无论你inheritance什么基类,最终你都会间接派生自System.Object
所以例如
public myConreteClass : myBaseClass {} public myBaseClass : System.Object {}
无论多长时间,链接在哪一个底层类上,可能会也可能不会从某些东西inheritance而inheritance自System.Object
A类派生自从System.Object派生的B类。
根据文件 :
这是.NET Framework中所有类的最终基类; 它是类型层次结构的根。
关键词是层次结构 。
所以这意味着(在一些想象中的应用程序中)一个名为Cat
的类可以inheritance自Mammal
,它可以inheritance自Animal
,然后inheritance自System.Object
。
如果有的话,所有类都inheritance自object
public class Foo {}
这与写作相同:
public class Foo : object {}
如果Bar子类为Foo:
public class Bar : Foo {}
然后我们仍然很好,因为Fooinheritance自对象,Bar也是如此。
C#类只能从一个Base类inheritance而其他类也可以从同一个类inheritance,因此多个类可以从同一个类inheritance,但每个calss只从一个类inheritance。
您可以在当时inheritance一种类型:
假设你有一个Object类型
public class Object { }
那么你有一个名为String
的类型,你可以从对象inheritance字符串
public class String : Object { }
然后创建一个名为StringWithColors
的类,inheritance自String
public class StringWithColors : String { }
此时,你的新类StringWithColors
将inheritance自String
和Object
..依此类推……