2015-06-01 67 views
2

在幾乎所有的代碼示例我已經遇到,用於在從JFrame派生類的方法setDefaultCloseOperation所述參數是一些恆定如JFrame.EXIT_ON_CLOSE.在這種情況下,由於是EXIT_ON_CLOSEJFrame一個常數,它可以直接訪問,並且沒有按不需要獲取方法來訪問它。爲什麼我們仍然以超類名稱JFrame作爲前綴?任何Swing類都是JFrame的子類,並且會繼承EXIT_ON_CLOSE常量,爲什麼不直接寫出方法調用setDefaultCloseOperation(EXIT_ON_CLOSE) 而不是setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)爲什麼JFrame.EXIT_ON_CLOSE vs EXIT_ON_CLOSE?

顯式超類的名字是否真的有必要?

+2

1)不要擴展'JFrame',只要在99.9%的情況下使用實例。 2)一個更有趣的問題將是「JFrame.EXIT_ON_CLOSE」與「JFrame.DISPOSE_ON_CLOSE」,我將在那裏爲後者大聲疾呼。 –

回答

5

EXIT_ON_CLOSE是JFrame類的靜態成員,這意味着它在JFrame類的所有實例中都是相同的。

爲什麼指定類?

因爲如果在子類中有EXIT_ON_CLOSE變量會怎麼樣?該變量將被用來代替。因此,爲了獲得靜態變量的正確的int值(在這種情況下),你必須說明變量定義在哪個類中。

這與你說this.variable時尋址類變量的原因類似一類。在這裏,我們只是說類名JFrame而不是this,因爲變量在所有實例中都是相同的。

相關問題