Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/401.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么匿名类不能访问私有方法和变量? 包装演示; 班童{ 专用静态int a=50; 公共财政部{ System.out.printlnholl; } 私人空蝇{ System.out.printlnlol; } } 公共课你好{ 公共静态无效字符串[]args { 孩子c=新孩子{ 公共空间f{ 系统输出打印对不起+a; } 公共财政部{ System.out.printlnholl; } }; c、 鳍; }}_Java_Inheritance_Anonymous Class - Fatal编程技术网

Java 为什么匿名类不能访问私有方法和变量? 包装演示; 班童{ 专用静态int a=50; 公共财政部{ System.out.printlnholl; } 私人空蝇{ System.out.printlnlol; } } 公共课你好{ 公共静态无效字符串[]args { 孩子c=新孩子{ 公共空间f{ 系统输出打印对不起+a; } 公共财政部{ System.out.printlnholl; } }; c、 鳍; }}

Java 为什么匿名类不能访问私有方法和变量? 包装演示; 班童{ 专用静态int a=50; 公共财政部{ System.out.printlnholl; } 私人空蝇{ System.out.printlnlol; } } 公共课你好{ 公共静态无效字符串[]args { 孩子c=新孩子{ 公共空间f{ 系统输出打印对不起+a; } 公共财政部{ System.out.printlnholl; } }; c、 鳍; }},java,inheritance,anonymous-class,Java,Inheritance,Anonymous Class,上面是java的代码,我的观点是为什么不能在匿名类中调用私有方法和变量,正如我在某个地方读到的,匿名类可以访问封闭类的所有成员。 go checkout指定匿名类的每个成员都可以访问封闭类的所有成员。该代码中有一个关于内部类和匿名类的混淆 请注意,这里有3个类: 小孩 你好 Hello$1:在Hello内部声明的匿名类,其父类是子类 代码中的混乱之处在于后者: Hello$1是Child的一个子类 Hello$1是Hello的一个内部类 这意味着: Hello$1无法从子类访问私有字段,因为子类

上面是java的代码,我的观点是为什么不能在匿名类中调用私有方法和变量,正如我在某个地方读到的,匿名类可以访问封闭类的所有成员。
go checkout指定匿名类的每个成员都可以访问封闭类的所有成员。

该代码中有一个关于内部类和匿名类的混淆

请注意,这里有3个类:

小孩 你好 Hello$1:在Hello内部声明的匿名类,其父类是子类 代码中的混乱之处在于后者:

Hello$1是Child的一个子类 Hello$1是Hello的一个内部类 这意味着:

Hello$1无法从子类访问私有字段,因为子类无法访问其超类的私有元素 Hello$1可以从Hello访问私有字段,因为匿名内部类可以访问其封闭类的私有元素 请在以下代码中更清楚地检查:

班童{ 私人INTA=50; } 公共课你好{ 私人int b=60; 公共空间f { 孩子c=新孩子{ 公共空间f{ //System.out.printlna=+a;//这不会编译 System.out.printlnb=+b;//编译正常 } }; } } 我在某个地方读到匿名类可以访问封闭类的所有成员

我想你指的是封闭类,是的。但是,子类不是封闭类,而是父类。在您的案例中,封闭类将是Hello.class,如果您向其中添加私有静态int a;i、 e:


它会起作用。

您以匿名方式重写类的事实对这种情况无关紧要。类无法访问其父级的私有成员。如果要访问父级成员,可以使用受保护的或默认的可见性来定义它们。

Lol私有方法不能被覆盖。。。。这没有任何意义,因为它们只在定义的类中可见这就是java或任何其他面向对象语言的工作方式非常感谢兄弟,我完全理解错了,,
public class Hello {
    private static int a = 40;
...