如果外部类在Java中没有“protected”修饰符,因为它的子类只能使用它,为什么Java允许对源文件中的类(公共除外)进行修饰,甚至虽然它的可访问性范围更低?
class A{
private class B{}
protected class C{}
public class D{}
class E{}
}
public class Test{
public static void main(String[] args){
System.out.println("Test class");
}
}
此处单个源文件的外部类A具有默认访问修饰符。现在,底部是源文件中的“A”类,Java中不允许这样的类:
protected class A{
private class B{}
protected class C{}
public class D{}
class E{}
}
public class Test{
public static void main(String[] args){
System.out.println("Test class");
}
}
我的问题是,如果外部类允许使用默认修饰符,为什么不允许使用受保护的修饰符,即使默认修饰符的范围小于。可以通过Same类,Same包和Sub-class访问受保护的。只能通过Same class和Same包访问Default。为什么第二个进程无效,即使第一个进程有效。我的问题是,如果保护没有意义,默认有意义吗?