gpt4 book ai didi

java - 从同一类的不同实例访问私有(private)方法

转载 作者:行者123 更新时间:2023-12-02 02:52:47 24 4
gpt4 key购买 nike

我刚刚遇到了一段代码。在一种情况下,我无法使用其实例访问类的私有(private)成员(这很好),但在其他情况下,我可以使用其不同的实例访问私有(private)成员(属于同一类)。谁能解释一下为什么会这样?

 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.*/
}
}

最佳答案

您可以从同一类中定义的任何代码块访问私有(private)成员。实例是什么并不重要,即使有任何实例也没关系(代码块位于静态上下文中)。

但是您无法从不同类中定义的代码访问它们。

您的第一个引用位于同一个类中,Complex,这就是它起作用的原因。第二个位于不同的类 Main 中,这就是它不起作用的原因。

关于java - 从同一类的不同实例访问私有(private)方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43556084/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com