div*_*er 0 java inheritance anonymous-class
package demo;
class Child{
private static int a=50;
public void fin() {
System.out.println("hello");
}
private void fly() {
System.out.println("lol");
}
}
public class Hello {
public static void main(String[] args)
{
Child c=new Child() {
public void f() {
System.out.println("sorry"+a);
}
public void fin() {
System.out.println("hello");
}
};
c.fin();
}}
Run Code Online (Sandbox Code Playgroud)
上面是java的代码,我的观点是为什么不能在匿名类中调用私有方法和变量,因为我在某处读到匿名类可以访问封闭类的所有成员。
https://www.baeldung.com/java-anonymous-classes
go checkout 指定匿名类的每个成员都可以访问封闭类的所有成员。
该代码中存在关于“内部类”和“匿名类”的混淆。
请注意,那里有 3 个课程:
ChildHelloHello$1:在其内部声明的匿名类Hello,其父类是Child代码中的混乱在于后者:
Hello$1是一个子类ChildHello$1是一个内部类Hello这意味着:
Hello$1无法访问 的私有字段Child,因为子类无法访问其超类的私有元素Hello$1可以从 访问私有字段Hello,因为匿名内部类可以访问其封闭类的私有元素在这段代码中检查得更清楚:
class Child {
private int a = 50;
}
public class Hello {
private int b = 60;
public void f()
{
Child c = new Child() {
public void f() {
// System.out.println("a = " + a); // This won't compile
System.out.println("b = " + b); // This compiles OK
}
};
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1077 次 |
| 最近记录: |