程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> JAVA綜合教程 >> Java學習 (十二)、面向對象編程(四)繼承,概念及super關鍵字,面向對象編程super

Java學習 (十二)、面向對象編程(四)繼承,概念及super關鍵字,面向對象編程super

編輯:JAVA綜合教程

Java學習 (十二)、面向對象編程(四)繼承,概念及super關鍵字,面向對象編程super


繼承

概念:

①   繼承背後的思想就是基於已存在的類來構建新類;

②   當從已存在類繼承時,就重用了它的方法和屬性,還可以添加新的方法和屬性來定制新類以應對需求;

③   當從其它類導出的類叫作子類,被導出的類叫作父類;

④   在Java中,除了Object類外,所有類都是子類,都有唯一父類;

⑤   繼承在OO中不可或缺;

⑥   創建一個類時,總是在繼承;

類之間關系:Is-a繼承體現,Has-a組合體現,Like-a實現接口體現;

繼承的意義:代碼重用,體現不同抽象層次;

父子類關系:父類更抽象,更一般;子類更具體,更特殊;

繼承的特點:1、子類繼承父類的成員;2、具有層次結構;

繼承的優點:1、代碼重用;2、父類字段和方法可用於子類;3、從抽象到具體形成類的結構體系;4、可輕松定義子類;

 

實現:

在Java中,用extends關鍵字來表示一個類繼承了另一個類;

public class Teacher extends Person{

         //代碼

}

 

super關鍵字

特點:

①   Super代表父類對象的引用,this代表當前對象的引用;

②   當子父類的成員出現重名時,可以通過super來進行區分;

③   子類的構造方法中,通過super關鍵字調用父類的構造方法;

public class JavaTeacher extends Teacher(){

         public JavaTeacher(String name,String school){

                   //通過調用父類的構造方法,完成對相關字段值的初始化

      super(name,school);

    }

}

 

☆當構造一個類對象的時候一定會先調用父類的構造方法來構造父類的對象,調用父類的構造方法的語句必須是子類構造方法中的第一條指令;

1 public class TeacherDemo{ 2 public static void main(String []args){ 3 B b=new B(); 4 5 //父類中加上showB()方法之後,調用的是子類的showB(); 6 7 //若要調用父類的showB();在子類中加上super.showB(); 8 b.showB(); 9 } 10 } 11 12 class A{ 13 public A(){ 14 System.out.println("A的構造方法"); 15 } 16 public void showA(){ 17 System.out.println("A"); 18 } 19 20 public void showB(){ 21 System.out.println("父類中的showB方法"); 22 } 23 } 24 25 class B extends A{ 26 public B(){ 27 //super();//調用父類無參的構造方法,可以省略 28 System.out.println("B的構造方法"); 29 } 30 31 public void showB(){ 32 System.out.println("B"); 33 //showA();//子類繼承父類,可以調用,同super.showA(); 因為名稱未沖突 34 super.showB(); 35 36 } 37 } View Code

下面這份代碼更清晰的表達了繼承

1 public class TeacherDemo{ 2 public static void main(String []args){ 3 JavaTeacher jTeacher=new JavaTeacher("張三","清華"); 4 jTeacher.teaching(); 5 6 DBTeacher dTeacher=new DBTeacher("李四","清華"); 7 dTeacher.teaching(); 8 } 9 } 10 11 class Teacher{ 12 private String name; 13 private String school; 14 15 public Teacher(String name,String school){ 16 this.name=name; 17 this.school=school; 18 } 19 20 public void teaching(){ 21 System.out.println("授課前准備"); 22 } 23 } 24 25 class JavaTeacher extends Teacher{ 26 public JavaTeacher(String name,String school){ 27 super(name,school); 28 } 29 30 public void teaching(){ 31 super.teaching();//調用父類teaching 32 System.out.println("打開eclipse"); 33 System.out.println("書寫java代碼"); 34 } 35 } 36 37 class DBTeacher extends Teacher{ 38 public DBTeacher(String name,String school){ 39 super(name,school); 40 } 41 42 public void teaching(){ 43 super.teaching();//調用父類teaching 44 System.out.println("打開Oracle"); 45 System.out.println("書寫pl-sql指令"); 46 } 47 } View Code

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved