【发布时间】:2019-03-31 11:37:28
【问题描述】:
给出下面的代码。我想知道为什么我的输出不是 B A B,而是 B A A
class A
{
public virtual void display()
{
Console.WriteLine("A");
}
}
class B : A
{
public new void display()
{
Console.WriteLine(" B ");
}
}
class Program
{
static void Main(string[] args)
{
A obj1 = new B();
B obj2 = new B();
obj2.display();
A r;
r = obj1;
r.display();
r = obj2;
r.display();
Console.ReadLine();
}
}
//Output:
B
A
A
由于 r 现在是对类 B(obj2) 的引用,它应该输出 B,但它输出的是 A。
【问题讨论】:
-
它的工作方式与大多数人的预期完全一样,所以如果它不符合您的预期,请解释您的预期以及为什么这些是您的预期.
-
我已经写过了,我期待 B A B,得到输出为 BAA
-
但是为什么。你还没有解释你的理由。
-
ok 推理如下 1.obj2 因为new关键字会输出B。
-
@ShadmanMahmood 看我的编辑,方法隐藏是关于 variable 是什么类型,而不是它指向的类型是什么
标签: c# inheritance method-hiding