【发布时间】:2012-06-10 23:59:41
【问题描述】:
我无法理解为什么 a 类中的 m() 可以通过 b 类和 b 类对象访问 x 和 y,如果 x 和 y 是私有的。我知道当 b 从 a 继承时,b 从 a 接收私有成员,即使它们不能被 b 使用。但奇怪的是b成员不能使用x和y,而a以外的类不能通过b类和b类对象获取变量,而m()却可以通过b访问x和y class 和 b 类对象。
有人可以使用我错过的一般规则向我解释这一点,或者解释一下编译器如何将基成员“给予”派生类吗?
class a
{
private int x;
private static int y;
static void m()
{
b bobj = new b();
int mm = bobj.x;
int rr = b.y;
}
void n()
{
b bobj = new b();
int mm = bobj.x;
int rr = b.y;
}
}
class b : a
{
private int u;
private static int v;
static void o()
{
}
void p()
{
}
}
【问题讨论】:
-
不确定问题出在哪里。
x和y只能在a的成员中访问,即使它们被基类继承和使用。
标签: c# inheritance