java - 私有(private)变量是否与私有(private)类中的包/默认/无修饰符变量具有相同的访问权限?

标签 java variables private

私有(private)变量是否与私有(private)类中的 package/default/no modifier 变量具有相同的访问权限?

public class PublicClass {

    public void test() {

        InnerClass in = new InnerClass();

        in.name1 = "a";
        in.name2 = "b";

        in.getName1();
        in.getName2();

    }

    private class InnerClass {

        private String name1;
        String name2;

        private String getName1() {
            return name1;
        }

        String getName2() {
            return name2;
        }

    }

}

test方法同时访问了name1和name2,那么私有(private)类中的变量设置private的目的是什么?

更新:private 关键字如何实际禁止访问的代码示例会很棒。

最佳答案

私有(private)成员可以在顶级封闭类中的任何地方访问,即在 JLS 6.6.1 中定义的 PublicClass :

if the member or constructor is declared private, then access is permitted if and only if it occurs within the body of the top level class (§7.6) that encloses the declaration of the member or constructor.

所以没有办法阻止方法访问内部类的私有(private)成员。

由于您的内部类是私有(private)的,您可以按照自己的方式声明其成员(包括公共(public)类),它们只能在 OuterClass 中访问。

关于java - 私有(private)变量是否与私有(private)类中的包/默认/无修饰符变量具有相同的访问权限?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10586662/

相关文章:

java - 动态地从另一个 XML 文件填充 XML 数据 (Java)

c++ - 需要在C++中将函数分配给变量

java - Java私有(private)声明

c# - x :FieldModifier ="Private" do and should I worry about it? 是什么

Java:变量赋值问题

javascript私有(private)函数访问公共(public)变量

java - 为什么句点分割需要双反斜杠?

java - simpMessagingTemplate convertAndSendToUser 大量等待线程阻塞其他功能

java - 媒体播放器静音/取消静音太迟

jquery - 变量和 jQuery 选择器