【发布时间】:2014-03-11 23:33:00
【问题描述】:
给定以下代码:
interface IParent
{
void ParentPrintMethod();
}
interface IChild : IParent
{
void ChildPrintMethod();
}
class Baby : IChild
{
public void ParentPrintMethod()
{
Console.WriteLine("Parent Print Method");
}
public void ChildPrintMethod()
{
Console.WriteLine("Child Print Method");
}
}
此时一切都很好。如果您要创建 Baby 类的新实例,如下所示,
Baby x = new Baby();
一切正常,您可以访问 ParentPrintMethod() 和 ChildPrintMethod();
但是,有人可以向我解释一下如果您执行以下操作会发生什么吗?
IParent x = new Baby();
在这种情况下,您可以访问 ChildPrintMethod() 吗?执行此操作时究竟发生了什么?
【问题讨论】:
-
我正在测试它,但是我不明白为什么会发生这种情况。在我看来,好像跳过了一个继承级别,我想知道这是否是这样的。
-
也许你应该描述一下你的实验和让你吃惊的部分?
-
请以 I...IParent、IChild、ICanHasCheeseburger 等开头命名您的接口。
-
我知道命名约定,我只是在这个例子中跳过了它。
-
+1。感谢您的编辑。以您想要的方式命名类/对象是您个人的选择(您在之前的评论中已明确说明)。不幸的是,大多数人没有无限的时间来查看问题——所以如果你的代码看起来很奇怪/与标题不匹配,你可能会得到关于风格而不是真实答案的 cmets。请注意,几乎每个人都将部分答案花在了您不寻常的界面命名选择上——同样的努力也可以花在更好地回答您的问题上。
标签: c# oop inheritance multiple-inheritance