为什么我可以调用私有方法?
我不应该能够调用实例化对象的私有方法。我想知道为什么下面的代码有效。
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");
}
}
我知道可以从类中访问私有方法。但是,如果类中的方法实例化了同一类的对象,则作用域规则是否不适用于该实例化的对象?
如本例所示,像main这样的静态方法可以访问类的非静态成员吗?
-
您的
main
方法是的方法SimpleApp
,因此可以调用SimpleApp
的私有方法。只是因为它是一个
static
方法并不妨碍它表现得像为目的的方法public
,private
等等。private
只是阻止的方法 等
访问类SimpleApp
的方法。
-
Java有什么方法可以调用私有方法吗?
2021-02-02 关注 0 浏览121 1答案
-
我可以在Java中覆盖私有方法吗?
2021-01-31 关注 0 浏览92 1答案
-
java @SafeVarargs为什么私有方法需要是最终的
2021-01-30 关注 0 浏览124 1答案
-
如何使用反射来调用私有方法?
2021-02-02 关注 0 浏览83 1答案
-
在Spring @PreAuthorize中调用私有方法
2021-02-02 关注 0 浏览109 1答案
-
如何从Java类外部调用私有方法
2021-01-31 关注 0 浏览87 1答案
-
如何从子级调用父级私有方法?
2021-01-30 关注 0 浏览79 1答案
-
使用java.lang.invoke.MethodHandle调用私有方法
2021-01-30 关注 0 浏览103 1答案
-
Java超类中的常规调用私有方法
2021-01-30 关注 0 浏览89 1答案
-
反射是否会破坏私有方法的概念,因为私有方法可以在类外部进行访问?
2021-02-02 关注 0 浏览121 1答案