【问题标题】:Member Class access modifier成员类访问修饰符
【发布时间】:2014-01-02 13:19:52
【问题描述】:

很明显,普通类的默认访问修饰符是包私有的 它对于内部 Local 类或内部匿名是私有的 但是当我们试图从容器类外部看到它时,对我来说成员类并不明显,它就像一个私有成员 那么它是私有的还是包私有的?

【问题讨论】:

    标签: java inner-classes access-modifiers


    【解决方案1】:

    除非您另外指定,否则所有内容都具有默认访问权限(包私有)。

    (除了在默认情况下所有内容都是公共的接口)

    【讨论】:

    • 据我所知,内部本地类的默认修饰符是私有的,因为它对包含它的可能块来说是私有的,就像一个方法
    • 你说的没有道理?你的意思是局部变量?局部变量不是私有的——它们根本没有访问修饰符,因为它们是本地的。
    【解决方案2】:

    就像 Tim B 所说的,默认情况下所有东西都是包私有的,除了在接口中。

    以下代码段演示了这一点。

    public class OuterClass {
    
        @Override
        public String toString() {
            return "I am the public outer class";
        }
    
        static class StaticInnerClass {
            @Override
            public String toString() {
                return "I am the package private inner class";
            }
        }
    
        class NonStaticInnerClass {
            @Override
            public String toString() {
                return "I am the package private non static inner class";
            }
        }
    
        public static void main(String[] args) {
            OuterClass oc = new OuterClass();
            OuterClass.StaticInnerClass ic = new OuterClass.StaticInnerClass();
            NonStaticInnerClass nsic = oc.new NonStaticInnerClass();
            System.out.println(oc);
            System.out.println(ic);
            System.out.println(nsic);
            System.out.println(new SecondClass());
        }
    }
    
    class SecondClass {
        @Override
        public String toString() {
            OuterClass oc = new OuterClass();
            OuterClass.StaticInnerClass ic = new OuterClass.StaticInnerClass();
            OuterClass.NonStaticInnerClass nsic = oc.new NonStaticInnerClass();
            return oc.toString() + "\n" + ic.toString() + "\n" + nsic.toString();
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-02-05
      • 2012-08-24
      • 1970-01-01
      • 2010-11-07
      • 1970-01-01
      • 1970-01-01
      • 2020-01-06
      • 1970-01-01
      相关资源
      最近更新 更多