關於對象的思考(一)


最近重溫關於面向對象方面的知識,將重點記錄下來。

1、組合實際上是聚集關系的一種特殊形式。一個對象可以被幾個其他聚集對象所擁有。如果一個對象只歸屬於一個聚類對象,那么它和聚集對象之間的關系就成為組合。例如:“一個學生有一個名字”就是學生類Student與名字類Name之間的一個組合關系,而“一個學生有一個地址”是學生類Student與地址類Address之間的一個聚類關系,因為一個地址可以被多個學生所共享。

2、一般來說,應該一律提供一個為構造默認實例的公共無參構造方法。如果一個類不支持無參構造方法,要用文檔寫出原因。如果沒有顯式定義構造方法,就假定有一個空方法體的公共默認無參構造方法。如果不想讓用戶創建類的對象,可以在類中聲明一個私有的構造方法,如

private Math(){}

3、構造方法永遠都是實例方法,因為它是用來構造實例的,一個靜態變量或方法可以從實例方法中調用,但是不能從靜態方法中調用實例變量或方法。

4、要調用父類構造方法就必須使用關鍵字super,而且這個調用必須是構造方法的第一條語句。在子類中調用父類構造方法的名字會引起一個語法錯誤。

public Circle(double radius, String color, boolean filled){
          super(color, filled);
          this.radius = radius;          
}

5、當構造一個子類對象時,子類構造方法會在完成自己的任務之前,首先調用他的父類的構造方法。如果父類繼承自其他類,那么父類構造方法又會在完成自己的任務之前,調用它自己父類的構造方法。這個過程持續到沿着這個繼承體系結構的最后一個構造方法被調用為止。這就是構造方法鏈

6、如果子類中沒有顯式定義的構造方法,那么它默認的無參構造方法將被調用,如果該類有父類,那么它的默認無參構造方法將會自動調用父類的無參構造方法。此時,如果父類沒有顯示的定義無參構造方法但顯式的定義了有參構造方法,那么程序將不能被編譯。所以,最好能為每個類提供一個無參構造方法,以便於對該類進行拓展同時避免錯誤。

 


注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2021 ITdaan.com