2015-10-20 63 views
3

我剛剛在閱讀某些代碼時遇到了這個問題,我完全不知道它的含義。我嘗試了Google搜索,但沒有收到任何東西,可能是由於缺乏詞彙表。代碼:Java使用範圍分辨率/「點」運算符「擴展」?

public final class GeneralPath extends Path2D.Float 
{ 
    // code and whathaveyou 
} 

我知道什麼至今:

所以我沒有關於「公共最後className類擴展」部分中的任何問題,但我不明白的點/範圍的存在超分類指定中的分辨率運算符。對於初學者,我想有人會說「Java沒有範圍解析操作符」來澄清Java和Cpp/other-OOP語言之間的細微差別,這很好,因爲我欣賞知道這種微妙的區別。這個「私人」關鍵字曾經在一次任務中殺死了我,我希望有人注意到Java和C中的「私人」之間的區別。

我很困惑,因爲顯然它沒有引用超類的成員,因爲「成員」是大寫的,即使它是,引用對象的成員而不僅僅是對象類本身似乎是多餘的。此外,我沒有找到關於這個主題的信息,因爲大多數編寫java how-to的人都傾向於從「基本」類繼承這樣的簡單概念開始,所以我找不到涉及「dot」操作符的任何內容使用「擴展」關鍵字。

如果我使用了太多的技術術語,我想知道他們爲什麼使用點運算符作爲「Path2D.Float」,或者至少是點運算符在這種情況下做了什麼。

非常感謝!

+1

'Path2D'本身就是'abstract',與其說是一個問題,但它還提供了兩個默認實現:Float和Double,它們提供了使用指定精度的實現,這些實現被定義爲'Path2D'的靜態內部類,因此您需要提供'Path2D'的上下文。然後才能訪問'Double'或'Float'實現:P – MadProgrammer

+0

它擴展了'Path2D.Float'類;我不確定問題是什麼。 –

+0

夢幻般的回答,MP。在你和rgettman之間,它完全澄清了情況。感謝磨坊!此外,感謝戴夫的努力,我總是明白,特別是因爲我的許多問題可能會被扭曲。 – botch

回答

7

GeneralPath類擴展一個類Float被嵌套在Path2D類中,它的定義是這樣的:

public class Path2D { 
    public static class Float { 
     // ... 
    } 
    // ... 
}