【发布时间】:2010-01-07 15:03:52
【问题描述】:
我正在尝试执行以下代码
class A
{
protected int a;
protected char b;
public void Show()
{
a=5;
MessageBox.Show(""+a);
}
}
class B:A
{
public void Show()
{
b='z';
MessageBox.Show(""+a+ ""+b);
}
}
当我执行aa.show() 时,我得到5(a 的值)作为输出,其中aa 是A 的实例,但是当我执行bb.show() 时,bb 是B 的实例,输出为 0(a 的值)z(b 的值)。
有人能解释一下为什么派生类无法显示 a 的当前值,即使它已被声明为受保护,而它能够显示 b 的正确值?
更新:
我会尝试建议的解决方案。关于编译错误,没有,我能够得到问题中提到的输出。
【问题讨论】:
-
你想要一个 be == 5 还是不?这个问题不太正确:为什么派生类不能显示a的当前值?派生类能够显示a值,但是这个a值永远不会改变从B类中的默认0。
标签: c# inheritance variables base-class