抱歉没有得到任何问题的时髦标题.
我被告知.Net(C#)不支持多重继承.但是看看下面的foo例子,我想知道这是真的吗?
class fooList
{
public int Index()
{
return 0;
}
}
class foo : fooList
{
public foo()
{ }
}
class testFoo
{
void test()
{
foo obj = new foo();
// From object
obj.Equals(obj);
obj.GetHashCode();
obj.GetType();
obj.ToString();
// From fooList
obj.Index();
}
}
Run Code Online (Sandbox Code Playgroud)
我们可以看到我有一个类fooList和一个根据语句foo继承的类fooList(C#不支持多重继承),类的对象foo应该只有一个Index()来自fooList类的方法,但是它有更多的方法来自对象类.它清楚地表明默认情况下所有类都继承object类.所以提出了问题
Ant*_*ram 13
C#不支持单个级别的多重继承.C#确实支持层次结构中的多级继承.您所看到的是,在继承System.Object层的顶部是层次结构,它是.NET中类和结构的顶级基类.
你不能拥有的是:
class A { }
class B { }
class C : A, B { }
Run Code Online (Sandbox Code Playgroud)
你有什么可以有:
class A { }
class B : A { }
class C : B { }
Run Code Online (Sandbox Code Playgroud)
合理?
为了更加完整,C#允许您通过使用接口来模拟多重继承.那就让我们回去吧.
class A { }
interface B { }
class C : A, B { } // legal
Run Code Online (Sandbox Code Playgroud)
在此示例中,C的声明是合法的,您需要实现接口B定义为C的一部分的各种成员.