我无法理解为什么 a 类中的 m() 可以通过 b 类和 b 类对象访问 x 和 y,如果 x 和 y 是私有的。我知道当 b 从 a 继承时,b 从 a 接收私有成员,即使它们不能被 b 使用。但奇怪的是b成员不能使用x和y,而a以外的类不能通过b类和b类对象获取变量,而m()却可以通过b访问x和y类和 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()
{
}
}