Roh*_*rya 2 java oop installation access-modifiers instance-variables
我刚刚遇到了一段代码。在一种情况下,我无法使用其实例访问类的私有成员(这很好),但在其他情况下,我能够使用其不同的实例访问私有成员(属于同班)。谁能解释一下为什么会发生这种情况?
class Complex {
private double re, im;
public String toString() {
return "(" + re + " + " + im + "i)";
}
Complex(){}
/*Below c is different instance, still it can access re,im( has a private access)
without any error.why? */
Complex(Complex c) {
re = c.re;
im = c.im;
}
}
public class Main {
public static void main(String[] args) {
Complex c1 = new Complex();
Complex c2 = new Complex(c1);
System.out.println(c1.re); /* But getting an error here ,
which is expected as re and im has a private access in Complex class.*/
}
}
Run Code Online (Sandbox Code Playgroud)
您可以从同一类中定义的任何代码块访问私有成员。实例是什么并不重要,或者即使有任何实例(代码块位于静态上下文中)也并不重要。
但是您无法从不同类中定义的代码访问它们。
您的第一个引用位于同一个类中,Complex这就是它起作用的原因。第二个是在不同的类中,Main这就是它不起作用的原因。
| 归档时间: |
|
| 查看次数: |
4239 次 |
| 最近记录: |