【java的繼承extends】


java中 “繼承”是面向對象軟 件技術當中的一個概念。如果一個類A繼承自另一個類B,就把這個A稱為"B的子類",而把B稱為"A的父類"。繼承可以使得子類具有父類的各種屬性和方 法,而不需要再次編寫相同的代碼。在令子類繼承父類的同時,可以重新定義某些屬性,並重寫某些方法,即覆蓋父類的原有屬性和方法,使其獲得與父類不同的功能。

繼承的基本概念
1.繼承是面向對象的三大特性之一。(封裝,繼承,多態)
2.被繼承的類是父類,繼承父類的類是子類
3.繼承可以使一個對象直接使用另以對象的屬性和方法
4.繼承可實現代碼重用


繼承的限制
1.java只能顯示單繼承,即一個類只能有一個父類
2.允許多重繼承
3.繼承只能繼承非私有的屬性和方法
4.構造方法不能被繼承

來看例子

情況一:

  1. public class Mystring {  
  2.       
  3.     public static void main(String[] args) {  
  4.           
  5.           student ok=new student("xiaoming");  
  6.               ok.say();//say方法也被繼承過來  
  7.     }  
  8.   
  9. }  
  10. class person  
  11. {  
  12.     public String name;   
  13.     //構造方法  
  14.     public person()  
  15.     {  
  16.        System.out.println("我是person構造方法");  
  17.     }  
  18.     public void say()  
  19.     {  
  20.         System.out.println("名字是 :"+name);  
  21.     }  
  22. }  
  23. class student extends person//繼承person類  
  24. {  
  25.     public student(String name)  
  26.     {  
  27.           this.name=name;//person的name屬性被繼承過來  
  28.     }     
  29. }  
復制代碼



輸出結果為:

<ignore_js_op> 

得出結論1:子類實例化時,首先會調用父類的構造方法,之后自己在進行實例化操作

情況二:


此時引入關鍵字super。super表示父類的引用,可以調用父類的方法和屬性。如調用父類的say方法,可以用。super.say()調用。

得出結論二:父類無默認構造函數時,子類必須顯示的調用父類的構造方法


繼承方法的重寫

   概念:在java中,子類能繼承父類中的方法,但有時子類並不想原封不動的使用父類的方法,而想做一些修改,這就需要采用方法的重寫,又稱方法覆蓋。

方法重寫需要注意的特性
1.發生重寫的父類和子類的兩個方法的返回值,函數名,參數列表必須完全一致
2.子類拋出的異常不能超過父類相應方法拋出的異常
3.子類方法的訪問級別不能低於父類相應方法的訪問級別(如父類方法時protected,子類重寫就要用protected或public)

如:
  1. public class Mystring {  
  2.       
  3.     public static void main(String[] args) {  
  4.           
  5.           student ok=new student("xiaoming");  
  6.           ok.say();//say方法也被繼承過來  
  7.     }  
  8.   
  9. }  
  10. class person  
  11. {  
  12.     public String name;   
  13.      
  14.     public void say()  
  15.     {  
  16.         System.out.println("名字是 :"+name);  
  17.     }  
  18. }  
  19. class student extends person//繼承person類  
  20. {  
  21.     public student(String name)  
  22.     {  
  23.         this.name=name;//person的name屬性被繼承過來  
  24.     }     
  25.       
  26.     //say方法重寫  
  27.     public void say()  
  28.     {  
  29.         System.out.println("重寫過得方法       名字是 :"+name);  
  30.       
  31.     }  
  32. }  
復制代碼


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM