Java之構造器

一. 構造器

構造器的做用是構造並初始化實例對象。當建立一個對象時,系統爲這個對象的屬性進行初始化。java

二. 語法

class 類名
{
    變量聲明;
    類的名稱(參數列表)
    {
         方法體
    }
}

構造器和類要有相同的名字,同時避免在構造器中定義與實例域重名的局部變量。例如this

class student
{
    private String name;
    private int studentID;
    //構造器
    public student(String n,int m){
        name=n;
        studentID=m;
    /*定義與實例域重名的局部變量
    *這種錯誤很難被發現
        String name=n;
        int studentID=m;
       */
    }
}

三. 特色

  • 構造器和類具備相同的名字code

  • 一個類能夠有多個構造器對象

  • 構造器能夠有0、1或多個參數編譯器

  • 構造器沒有返回值和返回類型編譯

  • 構造器不能被顯示調用,老是與new運算符儀器被調用,在建立一個類的新隊形的同時,系統會自動調用該類的構造器爲新對象初始化。class

在java的每一個類中,至少要有一個構造器,沒有定義的話,編譯器將自動插入缺省的構造器。
這種默認初始化被全部數值類型設爲0,布爾值爲false,全部引用類型的屬性設置爲null變量

無參數構造器

若是類中提供了至少一個構造器,可是沒有提供無參數的構造器,構造對象沒有提供參數就會被視爲不合法。權限

class student
{
    private String name;
    private int studentID;
    //構造器
    public student(String name,int studentID){
        this.name=name;
        this.studentID=studentID;
    }
}
student=new student(); //產生錯誤

解決方法:能夠爲java類保留無參數的構造器,爲一個類編寫了有參數的構造器,同時建議爲該類編寫一個無參數的構造器。通常把構造器設置爲public訪問權限,設置爲private是爲了阻止其餘類建立該類的實例。數據類型

四.構造器重載和調用

1.方法簽名

一個方法的簽名包括方法名、參數類型和個數,但不包括返回值。
類的定義中存在兩個或兩個以上的同名成員方法,爲了使編譯器能區分同名的成員方法,使同名方法的參數個數或參數的數據類型不一樣,從而使編譯器可以挑選具體執行某個方法。

class student
{
    private String name;
    private String major;
    private String school;
    private int studentID;
    //構造器1
    public student(String name,int studentID){
        this.name=name;
        this.studentID=studentID;
    }
    //構造器2
     public student(String school){
        this.school=school;
    }
    //構造器3
     public student(String major,int studentID){
        this.major=name;
        this.studentID=studentID;
    }
}

2.調用另外一個構造器

class student
{
    private String name;
    private String major;
    private String school;
    private int studentID;
    //構造器1
    public student(String name,int studentID){
        this("大山高中") //調用另外一個構造器
        this.name=name;
        this.studentID=studentID;
    }
    //構造器2
     public student(String school){
        this.school=school;
    }

3.顯式調用父類構造器

當咱們想調用超類的的某個方法,可是當前類也有相同的方法,這時可使用super關鍵字(只是一個指示編譯器調用超類方法的特殊關鍵字)。

class A{
    public A(){
        System.out.print("A");
    }
}
class B extends A{
    public B(){
        super();//調用父類構造方法,打印A
        System.out.print("B");
    }
}
相關文章
相關標籤/搜索