【发布时间】:2019-07-06 01:43:18
【问题描述】:
有人问我他是否可以运行私有基本功能。我告诉他,这当然是不可能的(除了重选技巧)。 但这是什么鬼:
public class MyClass {
public static void main(String args[]) {
A a = new B();
a.doSomething();
B b = new B();
b.doSomethingMore();
}
static class A {
private void doSomething(){
System.out.println("something");
}
}
static class B extends A{
public void doSomethingMore(){
((A)this).doSomething();
}
}
}
【问题讨论】:
-
代码到底有什么不清楚的地方?
-
你的方法是
MyClass类的私有方法。可以从MyClass中的任何代码调用。 -
private访问级别类 YES docs.oracle.com/javase/tutorial/java/javaOO/accesscontrol.html -
你的内部类 A 和 B 在同一个范围内。如果从 MyClass 中删除 B,可见性将被隐藏,并且您无法调用私有方法。
-
如果这是重复的,我不会感到惊讶,但我不会称它为 this marked question 的重复(当然也不是 this PHP question!)。
标签: java