Java 成员类访问修饰符
显然,普通类的默认访问修饰符是包私有的 它对于内部本地类或内部匿名类是私有的 但我不清楚的是,当我们试图从容器类外部查看成员类时,它就像一个私有成员一样Java 成员类访问修饰符,java,inner-classes,access-modifiers,Java,Inner Classes,Access Modifiers,显然,普通类的默认访问修饰符是包私有的 它对于内部本地类或内部匿名类是私有的 但我不清楚的是,当我们试图从容器类外部查看成员类时,它就像一个私有成员一样 那么它是私有的还是包私有的 除非您另行指定,否则所有内容都具有默认访问权限(即包专用) (在默认情况下所有内容都是公共的接口中除外)所有内容都具有默认访问权限(即包专用),除非您另有指定 (在默认情况下所有内容都是公共的接口中除外)所有内容都具有默认访问权限(即包专用),除非您另有指定 (在默认情况下所有内容都是公共的接口中除外)所有内容都具有
那么它是私有的还是包私有的 除非您另行指定,否则所有内容都具有默认访问权限(即包专用)
(在默认情况下所有内容都是公共的接口中除外)所有内容都具有默认访问权限(即包专用),除非您另有指定
(在默认情况下所有内容都是公共的接口中除外)所有内容都具有默认访问权限(即包专用),除非您另有指定
(在默认情况下所有内容都是公共的接口中除外)所有内容都具有默认访问权限(即包专用),除非您另有指定
(除了在默认情况下所有内容都是公共的接口中)就像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();
}
}
就像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();
}
}
就像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();
}
}
就像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();
}
}
正如我所知,内部局部类的默认修饰符是私有的,因为它对包含它的块是私有的,就像一个方法一样。你说什么没有意义?你是说局部变量?局部变量不是私有的-它们根本没有访问修饰符,因为它们是本地的。正如我所知,内部局部类的默认修饰符是私有的,因为它对包含它的块是私有的,就像方法一样。你说什么没有意义?你是说局部变量?局部变量不是私有的-它们根本没有访问修饰符,因为它们是本地的。正如我所知,内部局部类的默认修饰符是私有的,因为它对包含它的块是私有的,就像方法一样。你说什么没有意义?你是说局部变量?局部变量不是私有的-它们根本没有访问修饰符,因为它们是本地的。正如我所知,内部局部类的默认修饰符是私有的,因为它对包含它的块是私有的,就像方法一样。你说什么没有意义?你是说局部变量?局部变量不是私有的——它们根本没有访问修饰符,因为它们是局部变量。