Java三大特性之一----------繼承
什麼是繼承?
繼承是面向對象的三大特徵之一.java
也是實現軟件複用的重要手段.ide
Java繼承具備單繼承的特色, 每一個子類只有一個直接父類.測試
所謂繼承就是一個類(子類)保留了另一個類(父類)的一些(非私有)屬性或者方法code
繼承如何實現?
Java的繼承經過extends關鍵字實現對象
Java類繼承的格式以下繼承
修飾符 class SubClass extends SuperClass { //類定義部分 }
下面咱們經過一個具體的例子來看一下java的繼承機制如何實現class
首先我寫了一個動物類test
package parent; public class Animal { public int age; public String name; public void eat() { System.out.println(name+"吃東西"+"它今年"+age+"歲了"); } }
而後寫了一個子類(狗)import
package child; import parent.Animal; public class Dog extends Animal{ }
能夠看到個人子類什麼也沒有,可是他繼承自父類Animal,父類的非私有屬性和方法他均可以用軟件
下面我寫一個測試類來調用繼承自父類的方法和屬性
package test; import child.Dog; public class Test { public static void main(String[] args) { // TODO Auto-generated method stub Dog dog = new Dog(); dog.name="小花"; dog.age=2; dog.eat(); } }
運行程序我把輸出結果放在下面
小花吃東西它今年2歲了
上面的列子咱們能夠看到Dog的定義的中沒有屬性和方法的聲明,可是咱們在測試類中卻能夠調用它的一些屬性和方法,原來咱們在調用一個類的成員時,他首先會去看本身有沒有,若是本身沒有就會去看他的直接父類有沒有,再去找間接父類有沒有,直到找到爲止,那若是找不到呢?找不到很簡單,報錯嘛,因此咱們就看到了上面的運行結果
這裏有幾點注意事項和說明,也是新手很是會犯錯誤的地方
Java的子類不能繼承父類的構造器.
Java不支持多繼承,只能單繼承,可是Java支持多級繼承
Java的類若是沒有顯示聲明繼承的父類,那麼默認會繼承java.lang.Object類,Object類是全部類的根類,也就是說java的全部類都直接或者間接的繼承繼承自這個類。
上面的咱們自是用子類調用父類的成員,有時候咱們不單單是簡單繼承,咱們須要對父類的方法進行修改,增長一些方法,增長一些屬性,咱們這裏說的是增長沒有所有從新寫,體現java繼承優勢之一,增長了代碼的複用性。關於java繼承的其餘好處,咱們後面再統一列出
下面我會修改Dog類,讓他與父類有些不一樣
package child; import parent.Animal; public class Dog extends Animal{ public boolean sex; @Override public void eat() { System.out.println(name+"吃骨頭"+"它今年"+age+"歲了"); } public void printSex() { if(sex==true) System.out.println("男"); else System.out.println("女"); } } package test; import child.Dog; public class Test { public static void main(String[] args) { // TODO Auto-generated method stub Dog dog = new Dog(); dog.name="小花"; dog.age=2; dog.eat(); dog.sex=true; dog.printSex(); } }
輸出結果:
小花吃骨頭它今年2歲了
男
能夠看到這個測試中咱們一樣調用eat方法,但輸出和以前不同,這是由於我在這裏重寫了父類的eat方法,當子類重寫了方法以後,再調用這個方法時,他就會調用本身的方法,那麼什麼是重寫呢?怎樣重寫呢?
這種子類包含與父類同名方法的現象稱爲方法重寫(Override). 也被稱爲方法重寫,也能夠說子類覆蓋了父類的方法
方法重寫也要注意如下幾點:
方法名相同 / 形參列表相同
子類方法返回值類型應比父類方法返回值類型小或相等. / 子類方法聲明拋出的異常類應比父類方法聲明拋出的異常類更小或相等.
子類方法的訪問權限應比父類方法的訪問權限大或相等.
繼承的優勢與缺點A:繼承的好處a:提升了代碼的複用性b:提升了代碼的維護性c:讓類與類之間產生了關係,是多態的前提B:繼承的弊端類的耦合性加強了。