繼承在面向對象開發思想中是一個很是重要的概念,它使整個程序架構具備必定的彈性,在程序中複用一些已經定義完事的類不只能夠減小軟件開發週期,也能夠提升軟件的可維護性和可擴展性。java
在java中,使用extends關鍵字來標識兩個類的繼承關係。架構
下面舉個例子:ide
父類:spa
public class Test {對象
public Test(){繼承
//構造方法開發
}編譯器
protected void todo(){it
//成員方法編譯
}
}
子類:
public class Test2 extends Test{ //繼承父類
public Test2(){ //構造方法
super(); //調用父類構造方法
super.todo(); //調用父類成員方法
}
public void see(){
//新增方法
}
public void todo(){
//可重寫父類方法
}
}
super():在子類中,能夠直接用super關鍵字調用父類的構造方法和成員方法。
繼承並不僅是擴展父類的功能,還能夠重寫父類的成員方法。
注意:當重寫父類方法時,修改方法的修飾權限只能從小的範圍到大的範圍改變,例如上面的例子,父類中的todo()方法的修飾權限爲protected,繼承後子類中的方法todo()的修飾權限只能修改成public,不能修改成更小的範圍private。
在實例化子類對象時,java編譯器會在子類的構造方法中自動調用父類的無參構造方法。
例子:
父類:
public class Test {
public Test(){ //構造方法
System.out.println("這是父類構造方法");
}
}
子類:
public class Test2 extends Test{ //繼承父類
public Test2(){ //構造方法
System.out.println("這是子類構造方法");
}
public static void main(String[] args) {
Test2 p=new Test2(); //實例化子類對象
}
}
最終獲得的結果會將父類和子類的構造方法內的打印語句都實現:
這是父類構造方法
這是子類構造方法
在結果中能夠看到調用構造方法的順序,首先是頂級父類,其次纔是子類,順序從高到低。