2010-03-17 155 views

回答

5

可以聲明受保護的類或實際上是私有的 - 但只能在另一箇中。在這一點上它是從外一個派生類無論是可見的(在受保護的情況下)或者不是(在私有的情況下):

public class Outer 
{ 
    private static class NotVisibleToSubclassesOfOuter {} 

    protected static class VisibleToSubclassesOfOuter {} 
} 
+0

接口的實際情況也是如此。 – Roman 2010-03-17 17:25:07

+0

你可以使它更清晰的界面? 請使用例子,如果有的話。 – 2010-03-21 04:15:31

0

私人課堂是什麼意思?它不能在這堂課以外使用?你爲什麼會有這樣的課程? (你將如何運行/測試它?)

受保護的類是什麼意思?只有通過擴展它的類才能看到它。所以當你輸入一個類框架(一些在世界之外的地方)時,它不是可見的,但是當我們說擴展類動態變得可見時?

包受保護的類是有意義的 - 它對包內的類是可見的,而不是真正用於公共消費。

+1

私人課背後有一個原因。你想擁有在你的圖書館裏使用的實用程序類,但是你不想讓它公開。但是由於javac爲每個類創建.java文件,這有點無用。 – Andrey 2010-03-17 17:09:17

+0

@Andrey然後把這個類作爲一個私人類來使用它的類:)不是一個單獨的私人類:) OP問爲什麼類沒有私人修飾符。他們沒有在Java中,因爲它沒有它們是有意義的:) – 2010-03-17 17:18:32

+0

是的,我同意。但我想提一下,類的私有修飾符在java中是無用的,而不是它自己。在C#中有一個用於類的私有修飾符,它在那裏非常有意義。 – Andrey 2010-03-17 17:22:12

0

有在具有類私有或受保護的訪問說明沒有意義或接口,因爲當涉及到實現數據封裝的變量或方法時,這兩者更有意義。

+1

但是,當問題類型是嵌套類型時,這兩種方法都有意義。以我的答案爲例。 – 2010-03-17 17:42:56

0

Java中沒有這樣的訪問說明符。該術語是「訪問修飾符」。

(所以你所看到的所有面試問題都有什麼不同,都是無稽之談。)