は、Javaアクセス修飾子のいくつかのネストの例です。クラスが他のクラスである型を持つ属性を持つとき、私は答えを明確に把握できません。java access修飾子 - タイプが他のクラスである属性の可視性。なぜそれが見えるかどうか?
package packageX;
import packageY.*;
public class A {
public int x;
private int y;
protected int z;
public A objA;
public C objC;
void test(){
System.out.println(x);
System.out.println(y);
System.out.println(z);
System.out.println(objA.x);
System.out.println(objA.y);
System.out.println(objA.z);
System.out.println(objC.x);
System.out.println(objC.y);//not visible
System.out.println(objC.z);//?? why visible?
}
}
class B{
public A objA;
public C objC;
void test(){
System.out.println(x);//not visible
System.out.println(y);//not visible
System.out.println(z);//not visible
System.out.println(objA.x);
System.out.println(objA.y);//not visible
System.out.println(objA.z);
System.out.println(objC.x);
System.out.println(objC.y);//not visible
System.out.println(objC.z);//?? why visible?
}
}
package packageY;
import packageX.*;
public class C extends A{
public A objA;
public C objC;
void test(){
System.out.println(x);
System.out.println(y);//not visible
System.out.println(z);
System.out.println(objA.x);
System.out.println(objA.y);//not visible
System.out.println(objA.z);//not visible//??? why not visible?
System.out.println(objC.x);
System.out.println(objC.y);//not visible//??? why visible?
System.out.println(objC.z);
}
}
class D{
public A objA;
public C objC;
void test(){
System.out.println(x);//not visible
System.out.println(y);//not visible
System.out.println(z);//not visible
System.out.println(objA.x);
System.out.println(objA.y);//not visible
System.out.println(objA.z);//not visible
System.out.println(objC.x);
System.out.println(objC.y);//not visible
System.out.println(objC.z);//not visible//??? why not visible
}
}
私はいくつかの行を理解できませんか?属性が表示されているかどうかを説明できますか? C
はA
を拡張し、A
がy
はプライベートにしたので、
画像ではなくテキストとして関連コードをすべて投稿してください。 – biziclop
関連するすべてのクラス(つまり、「A」)も投稿してください – Berger