System.Object being the base class
本文关键字:base class the being Object System | 更新日期: 2023-09-27 18:15:57
这个问题对许多人来说可能很常见,我试图理解一个小时,但没有得到适当的解释。
MSDN说,System.Object是.NET Framework中所有类的最终基类;它是类型层次结构的根。
当 C# 不允许多重继承时,我如何继承,比如从类 A 到 B 类。因为所有的类,已经继承自System.Object,对吗?在这里,我说的是正常的继承。
Class A { --- }
Class B : A { --- }
请消除我的疑虑。谢谢。
更新:
同样,我的怀疑是,所有类都继承自System.Object,那么这将使类B具有类A和System.Object。从我上面的例子
正确,C# 只允许单一继承。System.Object 类由类 A 隐式继承。所以B类是-A,它是-系统对象。这由编译器处理,因此您无需明确说出Class A : System.Object
(尽管如果需要,可以(。
非常简单。猿从动物继承,黑猩猩遗传自猿。黑猩猩也从动物那里继承,但不是主要通过猿类。在 .NET 中,如果类未显式声明其继承,编译器将添加 IL 代码以从 System.Object 继承它。如果是这样,它将通过父类型继承 System.Object。
看,你只能有一个父亲。但你的父亲也可以有一个父亲。因此,您从祖父那里继承了一些属性。 Dog
类继承自Mammals
,而又继承自Animal
类,而类又继承自LivingThing
类。
多重继承意味着例如.class A 直接从类 B 和类 C 继承,如下所示:
class A : B, C
这在 C# 中不起作用。您的示例意味着您从某个类继承,该类本身继承自另一个类,如下所示:
class A : object
{
}
class B : A
{
}
这在 C# 中是可能的。
您似乎对"多重继承"的含义略有混淆?
多重继承不是当"B 从 A 继承,A 从 O 继承"时。 这只是一个简单的继承层次结构 - 这是C++,Java和C#的一个功能。
在上面的例子中,我们会说 B 直接从 A 继承,间接继承自 O。 B 从 A 继承(非私有(成员,间接继承 O 的(非私有(成员。
此外,C++支持真正的多重继承,有时可以称为"混合继承": 多重继承的一个例子是
class A : public O {};
class B : A, O {};
这里 B 直接从 O 继承,也直接从 A 继承 -- 在这种情况下,B 中存在两个 O 成员的副本,要访问来自 O 的 B 成员,您需要指定所需的副本:
例如 b.O::omember;
或b.A::omember;
对于大型C++类框架,在使用多重继承时,通常会在派生类中获取不需要的基类副本。 为了解决这个问题,C++提供了虚拟继承,它强制只继承虚拟基类的一个副本: 下面的示例应该清楚地说明这一点(或者使其更加混乱!
// Note, a struct in C++ is simply a class with everything public
struct O { int omember; };
struct A1 : O {};
struct B1 : O, A1 {};
struct A2 : virtual O {};
struct B2 : virtual O, A2 {};
B1 b1;
B2 b2;
// There are two 'omember's in b1
b1.omember; // Compiler error - ambiguous
b1.A1::omember = 1;
b1.O::omember = 2;
// There's only one 'omember' in b2, so all the following three lines
// all set the same member
b2.A2::omember = 1;
b2.O::omember = 2;
b2.omember = 3;
类A
继承自System.Object。类 B
继承自类 A
,类继承自System.Object
不能继承两个类,但可以继承类的层次结构。
System.Object
|
'-- Class A {}
|
'-- Class B {}
public class ClassA
{
}
public class ClassB : ClassA
{
}
public class ClassC : ClassB
{
}
多重继承意味着从多个类继承到一个类中。您的示例有效,但您将无法执行以下操作:
B 类 : A,C { --- }
多重继承的定义:
"多重继承是一些面向对象的计算机编程语言的一个特性,其中类可以从多个超类继承行为和特征。