繼承就是在一個現有類型的基礎上,經過增長新的方法或者重定義已有方法(重寫)的方式,產生一個新的類型。繼承是面向對 象的三個基本特徵——封裝、繼承、多態的其中之一,咱們在使用java時編寫的每個類都是在繼承,由於在java語言 中,java.lang.object類是全部類最根本的基類(或者叫父類、超類),若是咱們新定義的一個類沒有明確地指定繼承自哪一個基類,那麼java 就會默認爲它是繼承自object類的。java
1.爲何須要使用繼承? 提升代碼的重用性。 提升程序的擴展性。ide
2.Java繼承的語法格式 Java繼承的關鍵字:extends 格式: public class 類名(子類,派生類,超類) extends 類名(父類,基類) { } ?注意: Java類的繼承是單繼承。函數
3.子類繼承到了父類的哪些屬性和方法 子類繼承父類後,子類繼承到了父類全部的屬性和普通方法。構造方法沒有被子類繼承。 能不能調用方法或屬性,是由於訪問修飾符的關係來決定的。 public全部的地方均可以調用 protected當前包下和有繼承關係不一樣包的子類中。 默認的只能在當前包下調用 private只能在當前類中。 子類能本身定義屬性和方法嗎? 能夠而且子類能夠擁有比父類更多的屬性和方法對象
4.方法重寫 方法重寫的條件 必需要存在繼承關係 方法的返回值類型,方法名,參數個數,參數類型,參數順序都必需要和父類的徹底一致。 子類重寫方法時,方法的訪問修飾符能夠大於或者等於父類方法的訪問修飾符。 在調用方法的時候是否會調用錯方法? 建立的對象是不是子類的(new 構造方法()) 若是是子類的構造方法建立的對象,那會優先執行子類的方法,子類沒有才會執行父類的方法。 重載和重寫的區別: 重載和重寫都是針對方法的概念,在弄清楚這兩個概念以前,咱們先來了解一下什麼叫方法的型構。型構就是指方法的組成結構,具體包括方法的名稱和參數,涵蓋 參數的數量、類型以及出現的順序,可是不包括方法的返回值類型,訪問權限修飾符,以及abstract、static、final等修飾符。好比下面兩個就是具備相同型構的方法: public void method(int i string s) { // do something } public string method(int i string s) { // do something } 而這兩個就是具備不一樣型構的方法: public void method(int i string s) {// do something } public void method(string s int i) { // do something } 重載: 英文名是overload,是指在同一個類中定義了一個以上具備相同名稱,可是型構不一樣的方法。在同一個類中,是不容許定義多於一個的具備相同型構的方法的。 方法名相同,但參數類型、數量或順序必有一不一樣。 在同一類中或有繼承關係的類中都可重載。 重寫: 英文名是override,是指在繼承狀況下,子類中定義了與其基類中方法具備相同型構的新方法,就叫作子類把基類的方法重載了。這是實現多態必須的步驟。 方法名、參數類型、數量、順序必須徹底相同,訪問修飾符能夠不一樣,但子類必須大於或等於父類。只發生在有繼承關係的類中。繼承
5.自動轉型 方向:由子類自動轉爲父類 前提:兩個對象所在的類存在繼承關係 語法: [1]直接自動轉型 父類名 對象名 = new 子類構造函數(); Student stu =new UNStudent(); [2]在方法中進行自動轉型 子類名 對象名 = new 子類構造函數(); UNStudent unstu =new UNStudent(); teach(unstu); 訪問修飾符 返回值類型 方法名(父類名 參數名){ } public void teach (Student stu){ } 沒必要管建立對象左邊的部分,只要看右邊new的構造函數是子類仍是父類, 若是是子類,則優先調用子類的方法。 注意:要使用自動轉型,必需要存在繼承關係。 格式: 父類名 對象名 = new 子類構造方法(參數值,...); Student un = new UNStudent(); un.play(); 使用自動轉型後,不能調用子類自定義的方法; 由於Java編譯時,只會根據對象名的類型去查找方法是否存在,若是存在則經過編譯,若是不存在則報錯。 實例:一個大學老師,能夠教大學生,也能夠教初中生,高中生,小學生 那麼,對於這個教學的方法咱們就能夠只寫一次。而後在使用時進行相應的自動轉換一達到教學各類不一樣階層學生的目地。 對於咱們來講,使用自動轉型,那麼就只能調用父類中已經定義過的方法。 對於這個轉型,咱們有2種方法: 一: 父類名 父類對象名 = new 子類構造函數();二:父類名 父類對象名 = new 子類構造函數() 子類名 子類對象名 = new 子類構造函數(); public 返回值類型 方法名(父類類名 父類對象名){ 父類對象名.方法名(); } 方法名(父類對象名); 方法名(子類對象名);可是,自動轉型也是有明顯缺點的,若是使用自動轉型,則沒法調用子類的獨有方法。由於計算機比較笨,它只能按照固定的已經設定好的方式去執行,Java在編譯的時候,是根據對象名的類型去編譯程序,這個時候在子類中,是找不到相應的方法的,因此編譯出錯了。string
6.多態 多態是由方法重載,繼承,方法重寫,自動轉型等技術的組合。編譯
技術分享:www.kaige123.comclass