x と y が非公開の場合、クラス a の m() が b クラスと b クラスのオブジェクトを介して x と y にアクセスできる理由を理解できません。b が a から継承する場合、b はプライベート メンバーを使用できなくても、b は a からプライベート メンバーを受け取ることを知っています。しかし、私にとって奇妙なのは、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()
{
}
}