1繼承:
1) 子類將父類的所有東西都繼承過來,(私有的成員變數和成員方法也會繼承,但是不能使用)
2) 子類不能繼承構造方法,但是通過super關鍵字
3) 繼承的體現就是is a 的關係,什麼是什麼的一種.比如:貓是動物的一種.
4) 當子類的區域性變數和子類的成員變數和父類的成員變數名一樣時,就近原則,訪問時,離那個變數近,就是訪問那個變數.(this,super)
5) this代表的是當前的物件,super代表的是父類的物件,所以有this就訪問的是當前物件的成員變數或者當前成員方法.
6) 子類的構造方法預設的是訪問的是父類的無參構造方法;子類構造方法預設的第一句話是super().子類物件初始化時,先對父類進行初始化,父類初始化完畢後,子類才開始進行初始化.
7) 方法重寫:子類繼承父類時,出現了和父類一摸一樣的方法,就叫方法重寫,如果父類的方法被private修飾,則不能被重寫,如果父類的方法是static,則子類複寫時,必須也是static的;訪問許可權不能比父類的方法低.
2**塊:
1)靜態**塊:出現在類成員位置,用static修飾,靜態**塊是隨著類的載入而載入,並且只載入一次.子類和父類都有靜態**塊時:建立子類物件時,先父類靜態**塊-->子類靜態**塊-->父類初始化-->子類初始化
2)構造**塊:在類成員位置,在類的構造方法前執行,只要是將類的構造方法,相同的方法提取出來,放在構造**塊中.
構造**塊也主要是對物件進行初始化,每生成乙個物件就執行一次構造**塊.
3)區域性**塊:出現在區域性位置,主要是限制區域性變數的生命週期.
3多型:
1)多型的前提條件:必須有繼承;必須子類重寫了父類的成員方法;父類引用指向子類物件(重點).
2)成員變數:編譯看左,執行看左;
成員方法:編譯看左,執行看右;(成員方法會被重寫,所以執行時,執行的是子類的方法)
靜態成員方法:編譯看左,執行看左(靜態方法和類有關,不能算上方法重寫)
3)多型的特點:提高了**的擴張性,提高了**的維護性.
4)多型的弊端:父類的引用不能使用子類中特有的方法,如果想使用子類中的特有方法,必須向下轉型.
person p = new student() ; student s = (student) p;(向下轉型)
4final關鍵字:
1)final 代表:最終的,終態的,不可修改的.
2)final修飾類:這個類不能被繼承,final修飾成員方法:這個方法不能被重寫;final修飾變數:這個變數的值不能被改變.
3)final修飾基本資料變數:這個變數的值不能被修改,如果這個值在初始化的時候沒有被賦值,則只能被賦值一次,在成員變數時,必須在構造方法結束前,完成賦值.
final修飾引用型別:在堆記憶體中的位址值不能改變,但是裡面的成員變數的值可以改變.
繼承和多型
物件導向程式設計時有乙個非常重要的原則 write once only once 編寫一次,且僅編寫一次 如果沒有繼承這種機制我們可能要重複寫很多 下面來看一下繼承 一 繼承 1 子類如果繼承父類必須使用extends這個關鍵字 2 子類呼叫父類的構造方法使用super關鍵字,也可以通過super來...
繼承和多型
物件導向程式設計時有乙個非常重要的原則 write once only once 編寫一次,且僅編寫一次 如果沒有繼承這種機制我們可能要重複寫很多 下面來看一下繼承 一 繼承 1 子類如果繼承父類必須使用extends這個關鍵字 2 子類呼叫父類的構造方法使用super關鍵字,也可以通過super來...
繼承和多型
類還有乙個重要的特性就是繼承,什麼是繼承?它又有什麼作用呢?繼承最主要的目的就是為了擴充套件原類的功能,加強或改進原類所沒有定義的屬性及方法。例如我們有狗這個類,可是狗的種類還是有很多,比如說博美狗,聖伯納,柴犬等等,如果只用狗一種類來定義所有種類狗的屬性及方法,那麼用這個類所產生出來的物件一定會有...