[英]Why can't a class or an interface receive private or protected access modifiers?
我正在阅读一些Java文本,文本说我们只能为类和接口应用public
或default
访问修饰符。 因此,如果我们声明:它是一个编译错误:
private class A {}
要么
protected class A{}
我只是好奇为什么类或接口无法接收private
或protected
访问修饰符?
private
意思是“只在封闭的阶级中可见”。
protected
表示“仅在封闭类和任何子类中可见,并且也在封闭类的包中的任何位置”。
因此, private
,在应用于顶级课程时没有意义; protected
的定义的第一部分也是如此。 protected
的第二部分可以应用,但它由默认(包受保护)修饰符覆盖,因此protected
的部分无意义且部分冗余。
private
和protected
都可以(并经常)应用于嵌套类和接口,而不是顶级类和接口。
顶级类只能具有public
访问权限或default
访问权限,但内部类可以具有private access
:
public class TestClassAccess
{
public static void main(String[] args)
{
new TestClassAccess().new TestClassPrivateAccess();
}
private class TestClassPrivateAccess
{
TestClassPrivateAccess()
{
System.out.println("I'm a private class");
}
}
}
顶层只有两个用于类可见性的用例(a)在任何地方都可见(b)仅在包内可见。 因此只有两个修饰符( public
和默认)。 如果class是public
,那么所有类都可以看到它。 如果没有访问修饰符,则仅对同一包中的类可见。
如果在顶层有更多用于类可见性的用例,Java语言将提供更多修饰符。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.