[英]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.