簡體   English   中英

為什么類或接口不能接收私有或受保護的訪問修飾符?

[英]Why can't a class or an interface receive private or protected access modifiers?

我正在閱讀一些Java文本,文本說我們只能為類和接口應用publicdefault訪問修飾符。 因此,如果我們聲明:它是一個編譯錯誤:

private class A {}

要么

protected class A{}

我只是好奇為什么類或接口無法接收privateprotected訪問修飾符?

private意思是“只在封閉的階級中可見”。

protected表示“僅在封閉類和任何子類中可見,並且也在封閉類的包中的任何位置”。

因此, private ,在應用於頂級課程時沒有意義; protected的定義的第一部分也是如此。 protected的第二部分可以應用,但它由默認(包受保護)修飾符覆蓋,因此protected的部分無意義且部分冗余。

privateprotected都可以(並經常)應用於嵌套類和接口,而不是頂級類和接口。

頂級類只能具有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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM