super在構造函數中的運用


package example;
//在子類構造對象時,訪問子類構造函數時候,父類也運行。
//原因是:在子類的構造函數中第一行有一個默認的隱式語句super();
/*
 構造函數不能覆蓋
 子類的實例化過程:子類中所有的構造函數默認都不能訪問父類中空參數的構造函數。
 通過super();來調用。

為什么子類實例化的時候要訪問父類中的構造函數呢?

是因為子類繼承了父類,獲取到了父類中的內容(屬性),所以在使用父類內容之前,

要先看父類是如何對自己的內容進行初始化的。

所以子類在構造對象時,必須訪問父類中的構造函數。

為了完成這個必須的動作,就在子類的構造函數中加入了super();語句。

如果父類中沒有定義空參數構造函數,那么子類的構造函數必須用super明確要調用

父類中的哪個構造函數。

注意:super();語句必須要定義在子類構造函數的第一行。因為父類的初始化動作

要先完成。
 */
class Fu{
 Fu(int x){
  System.out.println("fu run");
 }
}
class Zi extends Fu{
 Zi(){
  super(4);//調用的就是父類中的空參數的構造函數
  System.out.println("zi run");
 }
}
public class ExtendsDemo {
 public static void main(String[] args) {
  new Zi();
 }
}

 

 

 

class Fu{
 Fu(){
  System.out.println("A fu run");
 }
 Fu(int x){
  System.out.println("B fu run"+x);
 }
}
class Zi extends Fu{
 Zi(){
  super();//調用的就是父類中的空參數的構造函數
  System.out.println("Z zi run");
 }
 Zi(int x){
    super(); //輸出的是A和D
  System.out.println("D Zi run"+x);
 }
}
public class ExtendsDemo {
 public static void main(String[] args) {
  new Zi(6);
 }
}

 

 

 

 

 

 

class Fu{
 Fu(){
  System.out.println("A fu run");
 }
 Fu(int x){
  System.out.println("B fu run"+x);
 }
}
class Zi extends Fu{
 Zi(){
  super();//調用的就是父類中的空參數的構造函數
  System.out.println("Z zi run");
 }
 Zi(int x){
  //super();
    super(x);//輸出的是B和D
  System.out.println("D Zi run"+x);
 }
}
public class ExtendsDemo {
 public static void main(String[] args) {
  new Zi(6);
 }
}

 


免責聲明!

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



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