溫馨提示×

溫馨提示×

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

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

Java子類實(shí)例化總是默認(rèn)調(diào)用父類的無參構(gòu)造操作

發(fā)布時(shí)間:2020-10-20 21:55:11 來源:腳本之家 閱讀:371 作者:zx33699659 欄目:開發(fā)技術(shù)

子類實(shí)例化時(shí),默認(rèn)調(diào)用父類的無參構(gòu)造方法(不管子類的構(gòu)造器有沒有參數(shù),因?yàn)樽宇惱^承的是父類的屬性和方法,只調(diào)用父類的無參構(gòu)造器就可以繼承父類的屬性和方法,因此不會調(diào)用父類的有參構(gòu)造器),再調(diào)用子類的有參/無參構(gòu)造器。

示例:

package classTest;
class Father {
 public Father(){
 System.out.println("父類的無參構(gòu)造方法");

 }
 public Father(int a ) {
 System.err.println("父類的有參構(gòu)造方法"+a);
 } 
}
class Son extends Father{
 public Son() {
 System.out.println("子類中的無參構(gòu)造方法");
 }
 public Son(int a ) {
  System.out.println("子類中的有參構(gòu)造方法"+a);
 } 
}

public class TestExecute {
 public static void main(String[] args) {
 Son s = new Son();
 System.out.println("---------------");
 Son a = new Son(5); 
 }
}

結(jié)果:

父類的無參構(gòu)造方法

子類中的無參構(gòu)造方法

---------------

父類的無參構(gòu)造方法

子類中的有參構(gòu)造方法5

補(bǔ)充知識:JAVA父類和子類的構(gòu)造函數(shù)之間的關(guān)系

我就廢話不多說了,大家還是直接看代碼吧~

class SuperClass {
 private int n;
 SuperClass(){ //父類的無參構(gòu)造器
  System.out.println("SuperClass()");
 }
 SuperClass(int n) { //父類的帶參構(gòu)造器
  System.out.println("SuperClass(int n)");
  this.n = n;
 }
}
class SubClass extends SuperClass{ 
 private int n;
 
 SubClass(){ //子類的無參構(gòu)造器
  super(300);//調(diào)用父類的帶參構(gòu)造器,super(300)相當(dāng)于SuperClass(300)
  System.out.println("SubClass");
 } 
 
 public SubClass(int n){ //子類的帶參構(gòu)造器
  System.out.println("SubClass(int n):"+n);
  this.n = n;
 }
}
public class TestSuperSub{
 public static void main (String args[]){
  SubClass sc = new SubClass();
  SubClass sc2 = new SubClass(200); 
 }
}

這個(gè)實(shí)例的輸出結(jié)果是:

SuperClass(int n)
SubClass
SuperClass()
SubClass(int n):200

從這個(gè)實(shí)例得到的結(jié)果是(個(gè)人見解):子類在構(gòu)造時(shí),會根據(jù)主函數(shù)中是否傳入?yún)?shù)來選擇使用無參構(gòu)造器 or帶參構(gòu)造器,在這個(gè)實(shí)例中:

當(dāng)子類調(diào)用的是無參構(gòu)造器時(shí),若父類的構(gòu)造器是帶有參數(shù)的,則必須在子類的構(gòu)造器中顯式地通過super關(guān)鍵字調(diào)用父類的構(gòu)造器并配以適當(dāng)?shù)膮?shù)列表。

當(dāng)子類調(diào)用的是帶參構(gòu)造器時(shí),則在子類的構(gòu)造器中用super調(diào)用父類構(gòu)造器不是必須的,如果沒有使用super關(guān)鍵字,系統(tǒng)會自動調(diào)用父類的無參構(gòu)造器。

以上這篇Java子類實(shí)例化總是默認(rèn)調(diào)用父類的無參構(gòu)造操作就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持億速云。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI