91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

深入淺析子類繼承父類中的構造函數

發布時間:2020-11-10 14:46:56 來源:億速云 閱讀:201 作者:Leah 欄目:開發技術

這期內容當中小編將會給大家帶來有關深入淺析子類繼承父類中的構造函數,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

一、總結

1.子類創建對象時會調用父類的構造方法

2.采用super顯示聲明了就是調用這個顯示聲明的父類構造方法,沒有則默認調用父類的那個空構造方法(父類中聲明了帶參數的構造方法,默認的就要顯示寫出)。

摘抄網絡:在創建子類對象時,會把父類里的成員變量和方法也加載進內存(因為要加載進內存,所以要看下這些數據是怎么初始化的,所以調用了父類的構造,僅此而已,并不是去創建了父類對象)

二、分析

1.子類為什么可以繼承父類的屬性與方法?

  子類對象中包含一個父類對象

  在子類對象在創建過程中,先調用父類構造方法(先創建出內置的父類對象),然后再創建出自己的對象。

  所以子類構造時,會先調用父類的構造方法,如果你在子類構造方法中不顯示指明調用父類的哪個構造方法,系統會給你默認加上super()。這時父類必須有一個無參的構造方法,不然會報錯。

2.子類在構造時,形參可以是多少個?(設父類有可訪問的成員屬性m個,子類倘若增加自己的則增加了n個)

A:子類沒有新加自己的屬性時,它會有從父類繼承過來的m個屬性。這個時候要是子類寫帶參數的構造方法,是對繼承過來的m個參數有選擇的進行初始化。

B:子類有自己新加的屬性時,它的屬性會有從父類繼承過來的m個+自己新加的n個,一共是m+n個,然后選擇性的寫構造方法。

3.存在繼承關系時,如何看子類的構造方法?

  •   反正會先調用父類的構造方法
  •   顯示寫了:super(參數列表),先依照此對繼承的父類屬性初始化
  •   沒有寫:調用父類的無參構造方法super()

4.構造方法里面是如何對屬性進行賦值的?

  形參一個兩個三個還是多少個都不重要,怎么賦值取決于你構造方法的方法體里面進行的操作!(未初始化的成員變量會有默認值(局部變量需要顯示賦初值))
  eg:子類構造方法里面傳遞三個參數

  1.你可以選擇這樣,將str賦值給父類屬性,num1與num2賦值給自己新加的屬性。

  //子類son的構造方法
  Son(String str,int num,char ch){
   super(str);
   System.out.println("子類有參構造方法");
   this.num = num;
   this.char = ch;
  }

  2.你也可以選擇將str和num賦值給父類,char賦值給自己。

  //子類son的構造方法2
  Son(String str,int num,char ch){
   super(str,num);
   System.out.println("子類有參構造方法");
   this.char = ch;
  }

  所以說,我們只需要記得子類構造方法必定會調用父類的構造方法,至于各種屬性的賦值,都是由方法內部決定的,而不是形參位置、數量等決定屬性的初始化。

三、實例

package yang.polymorphic;

class Father{
  public String str1;
  public int num1;

  Father(){
    System.out.println("父類無參構造方法");
  }
  Father(String str){
    System.out.println("父類有參構造方法1");
    this.str1 = str;
  }
}

class Son extends Father{
  public String str2;
  public int num2;

  Son(){
    //你不顯示調用父類的構造方法時,會默認加上super()
    System.out.println("子類無參構造方法");
  }
  Son(String str){
    System.out.println("子類有參構造方法1");
    this.str2 = str;
  }
  Son(String str,int num){
    super(str);
    System.out.println("子類有參構造方法2");
    this.num2 = num;
  }
}

public class Test {
  public static void main(String[] args) {
    Son son = new Son("dd",22);
    System.out.println("1."+son.str1+"--"+son.str2+"--"+son.num1+"--"+son.num2);
    System.out.println("-------------------------------");
    Son son2 = new Son("yy");
    System.out.println("2."+son2.str1+"--"+son2.str2+"--"+son2.num1+"--"+son2.num2);

  }
}

輸出結果:

深入淺析子類繼承父類中的構造函數

上述就是小編為大家分享的深入淺析子類繼承父類中的構造函數了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

白河县| 诸暨市| 武功县| 仁布县| 定安县| 平南县| 耒阳市| 綦江县| 永平县| 罗江县| 淮滨县| 溧水县| 景泰县| 获嘉县| 平泉县| 元阳县| 德惠市| 师宗县| 调兵山市| 西和县| 平陆县| 武鸣县| 峨山| 五台县| 利辛县| 昌邑市| 潼关县| 冀州市| 图片| 车险| 岗巴县| 从江县| 饶平县| 武宁县| 涟水县| 东宁县| 农安县| 伽师县| 信阳市| 威海市| 沙雅县|