繼承基本概念

繼承的基本概念

  1. 子類可以擁有父類的“內容”
  2. 子類還可以擁有自己專有的內容
  3. 繼承是多態的前提,如果沒有繼承,就沒有多態

特點

  1. Java語言都是單繼承的:一個類的直接父類只能有唯一一個。
  2. Java語言可以多級繼承。
  3. 一個子類的直接父類是惟一的,但是父類可以擁有很多個子類。
  • 定義父類的格式:(一個普通類的定義):
public class Fu {   

        // ...
        
}
  • 定義子類的格式:(一個普通類的定義):
public class Zi extends Fu {   

         // ...         //子類繼承父類,會繼承父類中方法,成員變量
         
}
  • 繼承中成員變量的訪問特點:
    在父子類的繼承關係當中,如果成員變量重名,則創建子類對象時,訪問有兩種方式:
  1. 直接通過子類對象訪問成員變量:
    等號左邊是誰,就優先用誰,沒有則向上找。

  2. 間接通過成員方法訪間成員變量
    該方法屬於誰,就優先用誰,沒有則向上找。

public static void main(String[] args) {

        Fu fu=new Fu();     //實例化父類
        Zi zi=new Zi();      //實例化子類
        //這個方法是在子類中定義的,優先使用子類的,沒有則往上找
        zi.methodZi();      //輸出爲200
        //這個方法是在父類中定義的
        zi.methodFu();     //輸出爲100
}
//父類
public class Fu {   
        
        int numFu=10;    
        int num=100;    
        
        public void methodFu(){       
        
                System.out.println(num);   
                
        }
        
        public Fu(){
        
                system.out.println("父類無參構造");
                
        }
        
        public Fu(int num){
        
                system.out.println("父類有參構造");
                
        }
}

//子類
public class Zi extends Fu {   
        
        int numZi=10;    
        int num=200;    
        
        public void methodZi(){       
        
                System.out.println(num);   
                int num=300;
                
        }
        
}
  • 區分子類方法中重名的三種變量:
  1. 局部變量: 直接寫成員變量名
  2. 本類的成員變量: this.成員變量名
  3. 父類的成員變量: super.成員變量名
public void methodZi(){       
        int num=300;
        
        System.out.println(num);                //300,局部變量
        
        System.out.println(this.num);          //200,本類的成員變量
        
        System.out.println(super.num);        //100,父類的成員變量
 }
  • 繼承中成員方法的訪問特點:
  1. 如果父類和子類中方法重名,則:創建的對象是誰,就優先用誰,如果沒有則向上找。
  2. 無論是成員方法還是成員變量,如果沒有都是向上找父類,絕不會向下找子類的。
  • 繼承中構造方法的訪問特點:
  1. 子類構造方法當中有一個默認隱含的“ super()調用,所以一定是先調用的父類構造,後執行的子類構造。
public Zi(){
        
        super(); //調用父類無參構造方法,程序自動隱藏生成,不用寫
        system.out.println("子類構造方法")
        
}
  1. 子類構造可以通過 super關鍵字來調用父類重載構造。
  2. super的父類構造調用,必須是子類構造方法的第一個語句。不能一個子類構造調用多次 super構造
public Zi(){
        
        super(num:20); //調用父類有參構造方法
        system.out.println("子類構造方法")
        
}
  1. 只有子類構造方法才能調用父類構造方法

總結:

子類必須調用父類構造方法,不寫則贈送 super();寫了則用寫的指定的 super調用,supe只能有一個,還必須是第一個。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章