第一講 繼承java
一、 繼承的做用安全
1) 提升代碼複用性;函數
2) 讓類與類之間產生了關係;學習
二、 java繼承特色設計
1) java只支持單繼承,不支持多繼承3d
由於多繼承容易帶來安全隱患:當多個父類中定義了相同功能,但功能內容不一樣時,子類對象不肯定要運行哪個。對象
2) java支持多層繼承:能夠造成一個繼承體系blog
利用一個繼承體系的方法:閱讀體系父類,瞭解共性功能(該體系的基本功能),具體要調用這些基本功能時,須要建立最子類的對象,爲什是最子類:繼承
一是:父類有可能不能建立兌現(如,靜態類或接口);接口
二是:建立子類對象可使用更多功能,包括父類功能和子類特有功能;
3) 子父類中函數的關係
當子類出現與父類如出一轍的函數時,子類就覆蓋了父類中該函數的內容,子類對象調用該函數時,只會運行子類函數的內容,這就是重寫的特性。
重寫的做用:當子類繼承父類,沿襲了父類中的功能。但,子類雖具有該功能,但功能的內容和父類不一致,這時沒有必要定義新功能,而是保留父類的功能定義,並重寫該功能內容便可
4) 重寫(覆蓋)注意事項
5) 重載和重寫的區別
重載:只看同名函數的參數列表——返回值類型能夠不同。
重寫:子父類方法要如出一轍——函數名、返回值、參數列表必須一致。
三、 子父類中構造函數的關係
1)在對子類對象進行初始化時,父類的構造函數也會運行,那是由於子類的構造函數默認第一行有一條隱式的語句super();
運行結果:子類在建立對象時,會先訪問父類中的構造函數。
注意:若是父類中顯示定義了有參數的構造函數,那麼在子類構造函數第一行,中必須顯示調用父類的構造函數。
爲何子類必定要訪問父類中的構造函數?
由於子類能夠直接獲取父類中的數據,因此子類對象在創建時,須要先查看父類是如何對這些數據進行初始化的,因此子類在對象初始化時,要先訪問如下父類中的構造函數。——不然,子類獲取的父類中的數據有可能不是父類最終初始化的結果。
第二講 final關鍵字
一、 Final特色
1) 能夠修飾類、函數、變量
2) 被final修飾的類不能被繼承——這是爲了不子類複寫父類中的關鍵函數;
以下會編譯失敗
3) 被final修飾的函數不能被複寫,以下狀況會編譯失敗:
4) Final修飾的變量是一個常量,只能賦值一次,該變量能夠是成員變量,也能夠是局部變量。以下狀況編譯失敗:
5) 內部類定義在局部位置上時,只能訪問該局部被final修飾的局部變量,不能訪問外部被final修飾的變量。以下會編譯失敗:
二、 Final修飾變量的意義
爲了加強閱讀性,都給這些值起個名字,方便閱讀。
第三講 抽象類
一、 抽象類特色
1) 抽象方法必定在抽象類中;
2) 抽象方法和抽象類都必須被abstract關鍵字修飾;
3) 抽象類不能夠用new建立對象,由於調用抽象方法沒有意義;
4) 抽象類中的抽象方法要被使用,必須由子類複寫其全部抽象方法後,經過子類對象來調用。若子類只複寫了部分抽 象方法,那該子類仍是一個抽象類——這樣定的目的是:強制子類作某些事情。
以下狀況就會出現編譯錯誤,由於子類沒有定義爲抽象類,必須把父類全部的抽象方法都重寫。——set()方法沒被重寫。
二、 抽象類與通常類的區別
抽象類多了抽象函數(通常類中不能定義抽象方法),抽象類不能實例化。
三、 抽象類特殊狀況
抽象類中能夠不定義抽象方法,而將該類定義成抽象方法的目的是:爲了避免讓類創建對象。
四、 抽象類練習
對員工進行建模:員工包含3個屬性(姓名、工號、工資),經理也是員工,除了含有員工的屬性外,還有一個獎金屬性。使用繼承的思想設計員工類和經理類,要求類中提供必要的方法進行屬性訪問。
代碼實現以下:
說明:在抽象類Employee中聲明瞭一個抽象方法work(),要求其子類必須重寫該方法,負責子類也必須是抽象類。
第四講 接口
一、 定義
接口至關於一種特殊的抽象類。
當抽象類中的方法都是抽象方法時,該類能夠經過接口的形式來表示。用interface來定義接口,用class來定義類。
格式特色:
二、 接口特色
1)一個類只能繼承一個類,但能夠實現多個接口,也能夠繼承一個類後實現多個接口;
2) 接口和接口之間的關係也叫作繼承,用extends表示繼承關係,接口能夠多繼承(由於接口內沒有方法體,不會形成混亂);
3) 基本功能定義在類中,擴展功能定義在接口中;如,學習是學生的基本功能(必須作的事情),而抽菸、喝酒是學生的擴展功能;
三、 接口使用舉例——接口用於功能擴展(如,學生的基本功能是學習,全部學生都擁有;而擴展功能能夠是抽菸、打球等)
知識點總結
一、 子父類中的構造函數關係
子類的全部構造函數,默認都會訪問父類中空參數的構造函數,由於子類每個構造函數內的第一行都要有一個句隱式的super()。當父類中沒有空參數的構造函數時,子類必須手動經過super語句形式來指定要訪問的父類中的構造函數。
二、 子類重寫父類函數
子類重寫父類函數,必須保證子類權限大於或等於父類權限,不然編譯失敗;
靜態只能覆蓋靜態。
三、 Final關鍵字特性
內部類定義在局部位置上時,只能訪問該局部被final修飾的局部變量,不能訪問外部被final修飾的變量。
四、 抽象類的子類必須把父類中的全部抽象方法都重寫了,不然,該子類仍然是抽象類;
五、 接口