將想法與焦點(diǎn)和您一起共享

java學(xué)習-構造函數發(fā)布者:本站     時(shí)間:2020-05-06 15:05:11

一直學(xué)習java,都沒(méi)有把構造函數弄清楚,通過(guò)昨天的學(xué)習,現在有了一點(diǎn)點(diǎn)理解,不知道還有什么不知道的,望大家指導指導。

當父類(lèi)沒(méi)有任何構造函數,子類(lèi)定義了一個(gè)不帶參數的構造函數,這時(shí)候在測試類(lèi)里面創(chuàng )建一個(gè)子類(lèi)的對象時(shí),程序運行時(shí),首先調用系統默認的父類(lèi)的構造函數,然后再調用子類(lèi)的構造函數。例子:

public class SuperClass {
 private String name;
 private String birthdate;

public void show() {
  System.out.println("this is a public function" + name + birthdate);

 }

}

public class SubClass extends SuperClass {
 String address;
 
 public SubClass() {
  System.out.println("SubClass:this is a no parameter constructor");
 }

 public void personinformation(String _name, String _birth, String _address) {
  System.out.println("output information" + _name + _birth + _address);

 }

}

public class Test {
 
 /**
  * @param args
  */
 public static void main(String[] args) {
  // TODO Auto-generated method stub
  SubClass absence = new SubClass();

 }
}

運行結果:SubClass:this is a no parameter constructor

當父類(lèi)里面定義了幾個(gè)構造函數,其中至少有一個(gè)不帶參數,子類(lèi)定義了一個(gè)不帶參數的構造函數,運行的時(shí)候,調用不帶參數的構造函數,然后再運行子類(lèi)的構造函數。

public class SuperClass {
 private String name;
 private String birthdate;

public SuperClass() {
  name = "chen";
  birthdate = "feb";

  System.out.println("SuperClass:this is a no parameter constructor");
 }

 public SuperClass(String chen, String febu) {
  name = chen;
  birthdate = febu;
  System.out.println("this is parameter constructor:" + name + birthdate);
 }

public void show() {
  System.out.println("this is a public function" + name + birthdate);

 }

}

public class SubClass extends SuperClass {
 String address;
 
 public SubClass() {
  System.out.println("SubClass:this is a no parameter constructor");
 }

 public void personinformation(String _name, String _birth, String _address) {
  System.out.println("output information" + _name + _birth + _address);

 }

}

public class Test {
 
 /**
  * @param args
  */
 public static void main(String[] args) {
  // TODO Auto-generated method stub
  SubClass absence = new SubClass();

 }
}

 運行結果:SuperClass:this is a no parameter constructor
SubClass:this is a no parameter constructor

當父類(lèi)中只定義帶參數的構造函數,父類(lèi)定義的構造函數和上面的一樣,這樣程序運行就會(huì )出現錯誤,編譯不能通過(guò),會(huì )出現錯誤提示。因為在創(chuàng )建子類(lèi)對象時(shí),由于沒(méi)有不帶參數的構造函數,它不知道要調用父類(lèi)的那個(gè)構造函數。所以要在定義子類(lèi)構造的第一行加上調用父類(lèi)的構造函數:super("hhh");根據括號里面的參數類(lèi)型、個(gè)數來(lái)確定調用父類(lèi)里面的那個(gè)構造函數。例子:

public class SuperClass {
 private String name;
 private String birthdate;

public SuperClass(String chen, String febu) {
  name = chen;
  birthdate = febu;
  System.out.println("this is parameter constructor:" + name + birthdate);
 }

 public SuperClass(String chen) {
  name = chen;
  System.out.println("this is parameter constructor1:" + name );
 }
 

public void show() {
  System.out.println("this is a public function" + name + birthdate);

 }

}

public class SubClass extends SuperClass {
 String address;
 
 public SubClass() {

super("hhh");                                      //非常重要!根據他來(lái)調用父類(lèi)的構造函數
  System.out.println("SubClass:this is a no parameter constructor");
 }

 public void personinformation(String _name, String _birth, String _address) {
  System.out.println("output information" + _name + _birth + _address);

 }

}

public class Test {
 
 /**
  * @param args
  */
 public static void main(String[] args) {
  // TODO Auto-generated method stub
  SubClass absence = new SubClass();

 }
}

運行結果:this is parameter constructor1:hhh



選擇我們,優(yōu)質(zhì)服務(wù),不容錯過(guò)
1. 優(yōu)秀的網(wǎng)絡(luò )資源,強大的網(wǎng)站優(yōu)化技術(shù),穩定的網(wǎng)站和速度保證
2. 15年上海網(wǎng)站建設經(jīng)驗,優(yōu)秀的技術(shù)和設計水平,更放心
3. 全程省心服務(wù),不必擔心自己不懂網(wǎng)絡(luò ),更省心。
------------------------------------------------------------
24小時(shí)聯(lián)系電話(huà):021-58370032
最新国产精品第二页_色资源av中文无码先锋_中国xx爽69护士_日韩欧美亚洲每日更新在线观看