1. 程式人生 > >Java有參構造方法和無參構造方法

Java有參構造方法和無參構造方法

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