繼承Widget拋錯的原因

2021-05-23 06:26:38 字數 752 閱讀 2401

原帖位址 http://www.eclipselight.org/rcp/83/

做rcp開發難免要繼承一些widget來定製自己的小組件,但是初學swt者會驚奇的發現,當繼承了乙個widget之後,程式根本執行不起來。

它會丟擲乙個swtexception(「subclassing not allowed」)異常。解決這個問題的方法很簡單,只要在你的實現類裡面重寫乙個方法並保留空方法體就可以了:

這裡我們應該深入去探索一下,為什麼swt要做這樣的限制呢?google了一下,發現原來swt是不鼓勵程式設計師去繼承它的widget類的。從物件導向的角度看,繼承乙個具體類或稱實現類(非抽象類)並不是個好注意,它是非常不安全的。物件導向的思想說:實現類就不是被用來繼承的,它唯一的作用應該是被拿來建立物件的

乙個實現類被改動的機率是非常大的,增加新功能,優化實現,重構**等等。試想,我們繼承了乙個swt的實現類,等到下一版本該實現類改了怎麼辦?那我們所有的子類也都要改了?使用者那裡一公升級他們的系統全不work了!

大概就是這樣吧,不過很多情況我們還是非得繼承不可,不然總不至於讓我們什麼都從底層去實現吧?

最後這裡給出乙個簡單的繼承swt label的例子:

db 錯的原因

c documents and settings administrator sqlplus ssada dada zhengche 2.sql cc.txt c c documents and settings administrator sqlplus bmpzc bmpzc zhengche ...

Hibernate 繼承對映可能會遇到的錯誤

我們在配置hibernate的時候,預設是會配置下面的兩個屬性的 1 property name hibernate.default catalog hibernate property 2 property name hibernate.default schema test property 但...

a元素顏色不能繼承父元素的原因

首先先思考乙個問題 為什麼都沒設定給 a元素和p元素的字型顏色,他兩都有顏色,而且顏色還不一樣。這裡涉及到乙個知識點,繼承,父元素填寫跟文字內容相關的css樣式可以被子元素繼承,但是也不是絕對,上面的a元素就是乙個例子,那到底是什麼原因導致了這種情況發生呢,這就涉及到了頁面渲染的過程 瀏覽器呢,他在...