java的无参构造方法_Java有参构造方法和无参构造方法
1、定義:
編寫一個類時沒有添加無參構(gòu)造方法,那么編譯器會自動添加無參構(gòu)造方法;(如果自己添加構(gòu)造函數(shù),無論有參數(shù)或是沒參數(shù),默認構(gòu)造函數(shù)都將無效)
編寫時添加了有參構(gòu)造方法而未添加無參構(gòu)造方法,那么編譯器只認有參構(gòu)造方法而不會默認添加無參構(gòu)造方法!
如果需要使用無參構(gòu)造方法,一定要在類里面添加
2、舉例:
定義四個類(說明四種情況):
類Person1 自己不手動添加任何無參或有參數(shù)構(gòu)造方法 (實例化對象時:編譯通過)
類Person2 自己添加無參的構(gòu)造方法 (實例化對象時:編譯通過)
類Person3 有參數(shù)的構(gòu)造方法 (實例化對象時:不通過)
類Person4 自己添加無參的構(gòu)造方法,和有參數(shù)的構(gòu)造方法 (實例化對象時:編譯通過)
//定義類Person1 自己不手動添加任何無參或有參數(shù)構(gòu)造方法
class Person1{
private int age;
private String name;
private String sex;
}
//定義類Person2 自己添加無參的構(gòu)造方法
class Person2{
private int age;
private String name;
private String sex;
public Person2(){
System.out.println("無參構(gòu)造方法被調(diào)用");
}
}
//定義類Person3 有參數(shù)的構(gòu)造方法
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 自己添加無參的構(gòu)造方法,和有參數(shù)的構(gòu)造方法
class Person4{
private int age;
private String name;
private String sex;
//不帶參數(shù)的構(gòu)造函數(shù),可以被重載
public Person4(){
System.out.println("無參構(gòu)造方法被調(diào)用");
}
//帶參數(shù)對的構(gòu)造函數(shù)
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對象 ②自動調(diào)用構(gòu)造方法Person( )
Person2 person2 = new Person2();//編譯通過;打印: 無參構(gòu)造方法被調(diào)用
// 這樣寫,編譯器會報錯,原因是系統(tǒng)默認的無參構(gòu)造方法被有參構(gòu)造方法覆蓋,編譯器不能再提供無參構(gòu)造方法
Person3 person3 = new Person3();
//Person4 person4 = new Person4();//編譯通過;打印: 無參構(gòu)造方法被調(diào)用
Person4 person4 = new Person4("qzz", "man", 18);//編譯通過;
}
}
3.使用構(gòu)造器時需要記住:
1.構(gòu)造器必須與類同名(如果一個源文件中有多個類,那么構(gòu)造器必須與公共類同名)
2.每個類可以有一個以上的構(gòu)造器
3.構(gòu)造器可以有0個、1個或1個以上的參數(shù)
4.構(gòu)造器沒有返回值
5.構(gòu)造器總是伴隨著new操作一起調(diào)用
父類有有參構(gòu)造方法有兩種情況,一只有有參構(gòu)造,那么子類的構(gòu)造方法中的第一句必須調(diào)用父類的有參構(gòu)造方法,也就是“super(....);”,....為你傳入的參數(shù)如:
class Father {
public Father(String lastname) {
}
}
class Son extends Father {
public Son() {
super("aaaa");// 這句必須有
// 可以寫其他代碼
}
}
二有有參也有無參構(gòu)造方法,這時子類不顯示調(diào)用super,這會默認自動調(diào)用父類無參的構(gòu)造方法,
class Father {
public Father() {
}
public Father(String lastname) {
}
}
class Son extends Father {
public Son() {
super();// 這句可以有也可以沒有,沒有寫的話會自動調(diào)用
// 可以寫其他代碼
}
}
總結(jié)
以上是生活随笔為你收集整理的java的无参构造方法_Java有参构造方法和无参构造方法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: QQ空间点赞源码,基于autojs的安卓
- 下一篇: java 入参校验_Java Valid