多個類中存在相同屬性和行爲時,將這些內容抽取到單獨一個類 中, 那麼多個類無需再定義這些屬性和行爲,只要繼承那個類便可java
多個類稱爲子類(派生類),單獨的這個類稱爲父類(基類或超類)編程
做用:app
類繼承語法規則:ide
class 子類名 extends 父類名{ }
在子類中能夠根據須要對從父類中繼承來的方法進行改造,也稱爲方法的重置、覆蓋。在程序執行時,子類的方法將覆蓋父類的方法測試
要求:this
子類重寫的方法必須和父類被重寫的方法具備相同的方法名稱、參數列表code
子類重寫的方法的返回值類型不能大於父類被重寫的方法的返回值類型orm
子類重寫的方法使用的訪問權限不能小於父類被重寫的方法的訪問權限對象
子類方法拋出的異常不能大於父類被重寫方法的異常blog
子類與父類中同名同參數的方法必須同時聲明爲非static的(即爲重寫),或者同時聲明爲 static的(不是重寫)。由於static方法是屬於類的,子類沒法覆蓋父類的方法
當子父類出現同名成員時,能夠用super代表調用的是父類中的成員
super的追溯不只限於直接父類
this表明本類對象的引用,super表明父類的內存空間的標識
當父類中沒有空參數的構造器時,子類的構造器必須經過this(參數列表)或者super(參數列表)語句指定調用本類或者父類中相應的構造器。同時,只能」二選一」 ,且必須放在構造器的首行
對象的多態性:父類的引用指向子類的對象
Java引用變量有兩個類型:編譯時類型和運行時類型
編譯時,看左邊;運行時,看右邊
子類中定義了與父類同名同參數的方法,在多態狀況下,將此時父類的方法稱爲虛擬方法,父類根據賦給它的不一樣子類對象,動態調用屬於子類的該方法。這樣的方法調用在編譯期是沒法肯定的
Person e = new Student(); e.getInfo(); //調用Student類的getInfo()方法
x instanceof A:檢驗x是否爲類A的對象,返回值爲boolean型
int a=(int)1200L;
對Java對象的強制類型轉換稱爲造型
Object類是全部Java類的根父類
若是在類的聲明中未使用extends關鍵字指明其父類,則默認父類爲java.lang.Object類
method(Object obj){…} //能夠接收任何類做爲其參數
==:
用「==」進行比較時,符號兩邊的數據類型必須兼容(可自動轉換的基本數據類型除外),不然編譯出錯
equals():能夠重寫
obj1.equals(obj2)
緣由:在這些類中重寫了Object類的equals()方法
任何狀況下,x.equals(null),永遠返回是「false」
針對八種基本數據類型定義相應的引用類型—包裝類(封裝類)
JDK1.5以後,支持自動裝箱,自動拆箱。但類型必須匹配
基本數據類型包裝成包裝類的實例 ---裝箱
int i = 500; Integer t = new Integer(i); Long l = new Long(「asdf」); //NumberFormatException
得到包裝類對象中包裝的基本類型變量 ---拆箱
//調用包裝類的.xxxValue()方法: boolean b = bObj.booleanValue();
字符串轉換成基本數據類型
//經過包裝類的構造器實現: int i = new Integer(「12」); // 經過包裝類的parseXxx(String s)靜態方法: Float f = Float.parseFloat(「12.1」);
基本數據類型轉換成字符串
//調用字符串重載的valueOf()方法: String fstr = String.valueOf(2.34f); // 更直接的方式: String intStr = 5 + 「」;