Java有參構造方法和無參構造方法
阿新 • • 發佈:2018-11-18
Java有參構造方法和無參構造方法
1**、定義:**
- 編寫一個類時沒有新增無參構造方法,那麼編譯器會自動新增無參構造方法;(如果自己新增建構函式,無論有引數或是沒引數,預設建構函式都將無效)
- 編寫時添加了有參構造方法而未新增無參構造方法,那麼編譯器只認有參構造方法而不會預設新增無參構造方法!
- 如果需要使用無參構造方法,一定要在類裡面新增
2、舉例:
定義四個類(說明四種情況):
類Person1 自己不手動新增任何無參或有引數構造方法 (例項化物件時:編譯通過)
類Person2 自己新增無參的構造方法 (例項化物件時:編譯通過)
類Person3 有引數的構造方法 (例項化物件時:不通過)
類Person4 自己新增無參的構造方法,和有引數的構造方法 (例項化物件時:編譯通過)
//定義類Person1 自己不手動新增任何無參或有引數構造方法
class Person1{
private int age;
private String name;
private String sex;
}
//定義類Person2 自己新增無參的構造方法
class Person2{
private int age;
private String name;
private String sex;
public Person2(){
System.out.println("無參構造方法被呼叫");
}
}
//定義類Person3 有引數的構造方法
class Person3{
private int age;
private String name;
private String sex;
public Person3(String name, String sex, int age ){
this.name = name;
this.sex = sex;
this.age = age;
}
}
//定義類Person4 自己新增無參的構造方法,和有引數的構造方法
class Person4{
private int age;
private String name;
private String sex;
//不帶引數的建構函式,可以被過載
public Person4(){
System.out.println("無參構造方法被呼叫");
}
//帶引數對的建構函式
public Person4(String name, String sex, int age ){
this.name = name;
this.sex = sex;
this.age = age;
}
}
public class ObjectInit_2 {
public static void main(String[] args) {
Person1 person1 = new Person1();//編譯通過;①例項化Person物件 ②自動呼叫構造方法Person( )
Person2 person2 = new Person2();//編譯通過;列印: 無參構造方法被呼叫
// 這樣寫,編譯器會報錯,原因是系統預設的無參構造方法被有參構造方法覆蓋,編譯器不能再提供無參構造方法
Person3 person3 = new Person3();
//Person4 person4 = new Person4();//編譯通過;列印: 無參構造方法被呼叫
Person4 person4 = new Person4("qzz", "man", 18);//編譯通過;
}
}
2018.10.29/週一
by 922