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。取出對象後用向下轉型爲更具體的類型。