一.繼承 :
1.方法的重寫
1.1)發生在父子類中,方法名稱相同,參數列表相同,方法體不同;
1.2)重寫方法調用時,看對象的類型;
1.3)作用:避免代碼的重複,有利於代碼的重用;
1.4)通過entends實現繼承;
1.5)父類:所有子類所共有的屬性和行爲; 子類:子類所特有的屬性和行爲;
1.6)子類繼承父類後, 子類具有=子類+父類;
1.7)一個父類可以有多個子類,一個子類只能有一個父類——》單一繼承;
1.8)繼承具有傳遞性;
1.9)java規定構造子類之前必須先構造父類。 子類構造中若自己不調用父類構造,則默認爲super()調用父類的無參構造,若 自己寫了,則不在默認提供,super()調父類構造必須位於子類構造第一句;
2 super():指代當前對象的父類對象
super().成員名——訪問父類的成員變量
super().方法名——調用父類的方法
super(). ——調用父類的構造方法
3 向上造型
3.1)父類型的引用指向子類的對象;
3.2)能點出來什麼,看引用的類型;
3.3)造型成的類:父類,接口;
4.重寫與重載的區別
4.1)重寫:父子類中,方法名相同,參數列表相同,方法體不同; 遵循運行期綁定,根據對象的類型;
4.2)重載:同一個類中,方法名相同,參數列表不同; 遵循編譯期綁定,根據參數引用的類型;
5.重寫遵循兩同兩小一大原則、
5.1)兩同:方法名稱相同,
參數列表相同
5.2)兩小:子類的返回值類型小於或等於父類;
返回值類型爲void時,必須相等;
返回值類型爲基礎類型時,必須相等;
返回值類型爲引用類型時,可以小於或等於;
5.3)一大:子類的訪問權限大於或者等於父類;
二:package:
1) 避免類的命名衝突;
2)包名可以有層次結構;
3)建議:包名所有字母都小寫;
4)完全限定名,包名,類名;
三:import:
1)同包中的類可以互相訪問;
不同包中的類想訪問:
1)import先申明引入類後再使用;
2)完全限定名——不建議
3)語法:import 包名.類名
四:訪問控制修飾符
1)public:公共的,任何類;
2)protected:受保護的,本類,子類,同包類;
3)默認的:什麼也不寫,本類,同包類;
4)private:私有的,本類;
五:static:靜態的
1)靜態變量
1.1)由static修飾;
1.2)屬於類,存在公共區中,只有一份;
1.3)常常通過類名. 訪問;
1.4)何時用:當所有對象數據都一樣時使用;
2)靜態方法
2.1)由static修飾;
2.2)屬於類,存在方法區中只有一份;
2.3)常常通過類名. 訪問;
2.4)靜態方法沒有隱式的this傳遞,所以靜態方法中不能直接訪問實例成員;
2.5)何時用:方法的操作僅與參數相關而與對象無關的時候;
3)靜態塊
3.1) 由static修飾;
3.2)在類被加載時自動執行,因此只被加載一次,所以靜態塊也只執行一次;
3.3)何時用:常常用於加載靜態資源(圖片,音頻,視頻等)
六:final
1)修飾變量,變量不可被改變;
2)修飾方法,方法不可被重寫;
3)修飾類,類不可被繼承;
final修飾成員變量,兩種初始化方式:
1)聲明時初始化;
2)構造方法中初始化;
final修飾局部變量
1)使用之前初始化即可;
七:常量
7.1)由static final修飾,必須聲明時同時初始化;
7.2)不能改變,通過類名來訪問;
7.3)建議:常量名所有字母大寫(多個單詞用下劃線_分割);
7.4)編譯器在編譯時被直接替換爲具體的數,所以效率高;
八:抽象方法
8.1)由abstract修飾;
8.2)只有方法的定義,沒有方法的實現 {}都沒有;
九:抽象類
9.1)由abstract修飾;
9.2)包含抽象方法的類必須是抽象類,不包含抽象方法的類也可以聲明爲抽象類;
9.3)抽象類不能被實例化;
9.4)抽象類是要被繼承的;
子類:9.4.1)重寫父類的所有抽象方法;
9.4.2)也可申明爲抽象類——一般不這麼用;
9.5)抽象類的意義:
父類的意義;9.5.1)封裝子類公有的屬性和行爲,被子類公用;
9.5.2)爲所有子類提供一種統一的類型——>向上造型;
可以包含抽象方法,爲所有子類提供了一個統一的入口,每個子類具體的實現不同;
十:接口 :引用數據類型
10.1)是一個標準規範,由interface定義;
10.2)接口中只能包含常量(默認)和抽象方法(默認);
10.3)接口不能被實例化;
10.4)接口是要被實現的,實現類;必須重寫接口中的所有方法;
10.5)一個類可以實現多個接口,又繼承又實現,必須先繼承後實現;
10.6)接口可以繼承接口;
十一:多態:多種形態
11.1)多態的意義:
11.1.1)同一類型的引用指向不同的對象時,有不同的實現; eg:行爲的多態:cut();run();
11.1.2)同一個對象被造型爲不同的類型時,有不同的功能;eg:對象的多態:水,冰;
11.2)向上造型:
11.2.1)父類型的引用指向子類的對象;
11.2.2)能造型成的類型爲:父類實現的接口;
11.2.3)能點出來什麼,看引用的類型;
11.3)強制類型的轉換:成功條件
11.3.1)引用所指向的對象,就是該類型;
11.3.2)應用所指向的對象,實現了該接口;
11.4)若違背如上兩個條件,則發生類型轉換異常
11.4.1)建議強轉之前通過 instanceof來判斷是否是該類型,instanceof爲true的條件就是強轉成功的條件;
十二:成員內部類
12.1)類中套類,裏面的叫內部類,外面的叫外部類;
12.2)內部類通常只服務與外部類,對外不具備可見性;
12.3)內部類對象通常只在外部類創建;
12.4)內部類中可以直接訪問外部內成員(包括私有的),內部類中有個隱式的引用指向創建它的外部類對象,
外部類名.class 成員變量;
十三:匿名內部類
13.1)想創建一個類的對象,對象創建後,類的意義就不存在了,此時該類不必命名,稱之爲匿名內部類;
13.2)匿名內部類若想訪問外部的變量,變量必須是final的;
總結:面向對象的三大特點
1)封裝
1.1)類:封裝的對象的屬性和行爲;
1.2)方法:封裝的功能的具體實現;
1.3)訪問修飾符:封裝的是訪問的權限;
2) 繼承
2.1)減少代碼的重複,有利於代碼的重用;
2.2)父類:所有子類所共有的,子類:子類所特有的;
2.3)一旦子類繼承了父類,子類具有:父+子;
3)多態
3.1)意義:行爲的多態,對象的多態;
3.2)向上造型:強制類型裝換 instanceof;
3.3)多態後,代碼擴展性,維護性好;
3.4)多態的表現形式:重寫和重載;