Java:内部类的访问级别

时间:2016-01-20 09:47:20

标签: java class nested inner-classes

我打算在另一个类

中创建一个类
path="**/background_palette_drawable_6.xml"

它有效...所以我可以访问内部的私人字段,我也添加了Inner2类并尝试更改" a"来自Inner2,它也起作用:/

所以内部类中的私有看起来不那么私密,在整个班级中看起来像是它的公共

2 个答案:

答案 0 :(得分:1)

对于外部类,嵌套类为public,对于所有其他类,嵌套类为private ...

一些参考:Nested Classes

声明private嵌套/内部类不会改变外部类本身的可见性,只需将嵌套类(私有或非私有)视为外部类的变量/方法。

public class Sq {
    public int publicNumber = 0;
    private int number = 0;
    private class Inner { ... }
}

修改

从内部类中,您还可以调用外部类的一些变量/方法,否则没有问题

public class Sq {

    private int number = 0;

    class Inner {
        private int a;

        private Inner(int a1) {
            this.a = a1;
            number++;
        }

        private String getOuterClassString()
        {
            return getOuterString();
        }

        private String getPrivateString()
        {
            return "privateString";
        }

        public String getPublicString()
        {
            return "publicString";
        }
    }

    private String getOuterString()
    {
        return "outerString";
    }

    public static void main(String[] args) {
        Sq outter = new Sq();
        Inner d = outter.new Inner(3);
        System.out.println("Number = " + outter.number);
        System.out.println("Private a = " + d.a);
        System.out.println("Number = " + outter.number);

        System.out.println(d.getPrivateString());
        System.out.println(d.getPublicString());
        System.out.println(d.getOuterClassString());
    }
}

答案 1 :(得分:0)

内部类最终意味着在组织方面为外部类提供一些实用程序。内部类可以完全被外部类访问,因为最终你真的不需要隐藏来自你自己的类的数据。当代码的复杂性要求您隐藏getter和setter背后的数据时,您应该认真考虑将该类放在自己的文件中的可能性。