是在类级别还是在对象级别的私有(private)成员访问权限。如果是在对象级别,则以下代码不应编译
class PrivateMember {
private int i;
public PrivateMember() {
i = 2;
}
public void printI() {
System.out.println("i is: "+i);
}
public void messWithI(PrivateMember t) {
t.i *= 2;
}
public static void main (String args[]) {
PrivateMember sub = new PrivateMember();
PrivateMember obj = new PrivateMember();
obj.printI();
sub.messWithI(obj);
obj.printI();
}
}
请说明在sub的messWithI()方法中访问obj的成员i是否有效
最佳答案
正如DevSolar所说的,它处于(顶级)类级别。
从section 6.6 of the Java Language Specification:
请注意,没有迹象表明它仅限于特定对象的成员。
从Java 7开始,the compiler no longer allows access to private members of type variables。因此,如果该方法具有类似public <T extends PrivateMember> void messWithI(T t)
的签名,则访问t.i
将会是编译器错误。但是,那不会改变您的特定情况。
关于java - 私有(private)成员访问Java,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/676930/