最近重溫關於物件導向方面的知識,將重點記錄下來。
1、組合實際上是聚集關係的一種特殊形式。乙個物件可以被幾個其他聚集物件所擁有。如果乙個物件只歸屬於乙個聚類物件,那麼它和聚集物件之間的關係就成為組合。例如:「乙個學生有乙個名字」就是學生類student與名字類name之間的乙個組合關係,而「乙個學生有乙個位址」是學生類student與位址類address之間的乙個聚類關係,因為乙個位址可以被多個學生所共享。
2、一般來說,應該一律提供乙個為構造預設例項的公共無參構造方法。如果乙個類不支援無參構造方法,要用文件寫出原因。如果沒有顯式定義構造方法,就假定有乙個空方法體的公共預設無參構造方法。如果不想讓使用者建立類的物件,可以在類中宣告乙個私有的構造方法,如
private math(){}
3、構造方法永遠都是例項方法,因為它是用來構造例項的,乙個靜態變數或方法可以從例項方法中呼叫,但是不能從靜態方法中呼叫例項變數或方法。
4、要呼叫父類構造方法就必須使用關鍵字super,而且這個呼叫必須是構造方法的第一條語句。在子類中呼叫父類構造方法的名字會引起乙個語法錯誤。
public circle(double radius, string color, booleanfilled)
5、當構造乙個子類物件時,子類構造方法會在完成自己的任務之前,首先呼叫他的父類的構造方法。如果父類繼承自其他類,那麼父類構造方法又會在完成自己的任務之前,呼叫它自己父類的構造方法。這個過程持續到沿著這個繼承體系結構的最後乙個構造方法被呼叫為止。這就是構造方法鏈。
6、如果子類中沒有顯式定義的構造方法,那麼它預設的無參構造方法將被呼叫,如果該類有父類,那麼它的預設無參構造方法將會自動呼叫父類的無參構造方法。此時,如果父類沒有顯示的定義無參構造方法但顯式的定義了有參構造方法,那麼程式將不能被編譯。所以,最好能為每個類提供乙個無參構造方法,以便於對該類進行拓展同時避免錯誤。
關於值物件的思考
使用值物件模式的好處。一般我們操控類內屬性都是get和set方法,很常用也很好用。class myclass 但是我們在操控類的過程中,自己不小心或第三方介面使用者誤呼叫了set方法導致myclass類內狀態發生變化,這個是我們不想要的。應該對類加以限制,那麼該如何限制。這時候我們可以用builde...
關於物件導向的一些思考
物件導向方法被人談論了二十多年了。我接觸它比較晚,直到九十年代中期才開始學習使用它。若說對這個方法做些評價,那還真是大言不慚了。不過這麼些年來,也週期性的對物件導向做些思考。或對或錯,我想都值得總結一下。一家之言,來看的同學不必太當真。首先我們要區分一下 基於物件 和 物件導向 的區別。基於物件,通...
一些關於物件導向的思考
python是一門神奇的語言,看了看裡面一些關於物件導向的描述。覺得挺受啟發的,在c 中同樣適用。主要觀點出自magnus lie hetland的 python基礎教程 1 將屬於一類的物件放在一起。如果乙個函式操縱乙個全域性變數,那麼兩者最好都在類內作為特性和方法出現。2 不要讓物件過於親密。方...