成员类访问修饰符
Posted
技术标签:
【中文标题】成员类访问修饰符【英文标题】:Member Class access modifier 【发布时间】:2014-01-02 13:19:52 【问题描述】:很明显,普通类的默认访问修饰符是包私有的 它对于内部 Local 类或内部匿名是私有的 但是当我们试图从容器类外部看到它时,对我来说成员类并不明显,它就像一个私有成员 那么它是私有的还是包私有的?
【问题讨论】:
【参考方案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();
【讨论】:
以上是关于成员类访问修饰符的主要内容,如果未能解决你的问题,请参考以下文章
在Java和c#中如果不写访问修饰符,类和类成员默认的是啥访问修饰符?