gpt4 book ai didi

java - 为什么我可以调用私有(private)方法?

转载 作者:搜寻专家 更新时间:2023-11-01 03:59:38 26 4
gpt4 key购买 nike

我不应该能够调用实例化对象的私有(private)方法。我想知道为什么下面的代码有效。

public class SimpleApp2 {
/**
* @param args
*/
private int var1;

public static void main(String[] args) {
SimpleApp2 s = new SimpleApp2();
s.method1(); // interesting?!
}

private void method1() {
System.out.println("this is method1");
this.method2(); // this is ok
SimpleApp2 s2 = new SimpleApp2();
s2.method2(); // interesting?!
System.out.println(s2.var1); // interesting?!
}

private void method2() {
this.var1 = 10;
System.out.println("this is method2");
}
}

我知道可以从类中访问私有(private)方法。但是,如果类中的方法实例化同一类的对象,范围规则难道不应该应用于该实例化对象吗?

像 main 这样的静态方法能否访问类的非静态成员,如本例所示?

最佳答案

你的main方法是SimpleApp的一个方法,所以它可以调用SimpleApp的私有(private)方法。

仅仅因为它是一个static 方法并不能阻止它表现得像一个用于publicprivate 等目的的方法。private 仅阻止其他 类的方法访问SimpleApp 的方法。

关于java - 为什么我可以调用私有(private)方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6989494/

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