【筆記】Think in Java 對象導論

1、類,實際上就是一個數據類型。

2、要獲取對象,就必須產生對對象的請求。這些請求由對象的接口(interface)所定義

Light lt =new Light();

類型 引用 創建新對象
lt.      on();
對象名稱 消息請求


3、對象是服務的提供者

4、類只暴露必要的部分,隱藏其他的部分。將實現隱藏起來可以減少bug。

5、良好的類分離的接口和實現,用public定義接口,用private定義實現。

6、protected:對於其子類是public,對於其他則是private

7、新的類可以由多個對象組合。先考慮組合,再考慮繼承。

8、繼承:複製現有的類(基類,父類),然後添加或修改它。一個基類包含所有導出類共享的特性。

導出類無法訪問基類的private成員。導出類也複製了基類的接口。發給基類的消息也可以發給導出類。

9、兩種方法使基類與導出類產生差異:一、在導出類中添加新方法。二、改變基類的方法,覆蓋(overriding)


is a(無新方法)與is like a(有新方法)

10、將一個對象當做其基類的對象來對待,而不當做特定類型來對待。


11、多態:忽略類型的具體細節,僅僅與基類交互。即向上轉型。

void doStuff (Shape s){

s.erase();

s.draw();

}


Circle c = new Circle();

Line l = new Line();

doStuff(c);

doStuff(l);


12、abstract類,抽象基類:希望基類僅僅表示導出類的接口。不希望創建基類的對象,只希望將對象向上轉型到基類

13、abstract方法,接口方法:這是一個從此基類繼承來的所有類型都具有的接口方法,。只是此時沒有給它設計實現。可以在基類被繼承時,實現抽象方法。

抽象方法可以將一個方法置於接口中而不必提供方法體


14、java在堆(內存池)中動態的創建對象,用new關鍵字來構建此動態實例。

15、容器中放任意多少個對象。通過迭代器進行元素操作

16、所有類都繼承一個基類,object

17、向下轉型:若容器只存儲object,將對象引用置入容器中必須向上轉型成Object。取出對象後用向下轉型爲更具體的類型。





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章