java構造方法與方法的區別

構造方法是定義在java類中的一個用來初始化對象的函數,其方法名和類名相同,但是通常不顯示地它,在創建類的一個實例時,構造方法就像一個方法一樣被調用,因爲從來不顯示地調用它,所以無法訪問其返回值,即構造函數不返回值。

構造方法的小例子:

Public class person{
   Int id ;
   Int age;
   Person(int n, int i){
      Id = n;
      Age = I;
   }
}

我們從上面的說明中,可以看出構造方法和方法是有區別的,主要表現在一下方面:

1、  修飾符:構造方法像普通方法一樣,可以有任何的訪問修飾符public、protected、private,但是不能有abstract、final、static等非訪問修飾符;

2、  返回值:構造方法沒有返回值,void也不行;

3、  命名:構造方法和類具有相同的名字,而類最好不要。

4、  編寫:構造方法可以自己編寫也可以系統默認,顯然普通方法只能自己編寫;

5、  調用:在創建對象或是調用靜態成員變量時,首先會調用構造方法,是系統自動調用,而普通的方法只能實例化完對象,才能用對象調用。

上面只是簡單的對比了一下構造方法和普通方法,下面我們在具體看一下。

(1)     this用法:

對於方法引用this指向正在執行方法的類的實例;靜態方法不能使用this關鍵字;構造方法指向這個對象的另一個構造方法,示例如下:

Public class Person{
   String name;
   int age;
   String sex;
   Person (string n, int g , string s){
      name = n;
      age = g;
      sex = s;
   }
   Person ( string n ,I nt g){
      This(n,g,”男”)
   }
   Public Static void main(String args[] ){
     Person  p1 = new Person(“hua”,20,”女”);
     Person  p2 =new Person(“yang”,20);
     System.out.println(p1.name +”,” +p1.age +”,”+ p1.sex);
     System.out.println(p2.name +”,” +p2.age +”,”+ p2.sex);
   }
}

運行結果如下:

分析上面的代碼得出,Person類中的第二個構造方法調用了第一個構造方法。

注意:在構造方法中只能調用一次其他的構造方法,並且並且調用構造方法的語句必須是第一條語句,否則編譯錯誤。

(2)      繼承中構造方法:

構造方法和普通方法,都用關鍵字super指向超類,但是使用方法不同。

1)  普通方法:執行被重載的超類中的方法,代碼如下:

Class  Person{
   Public void eat(){
     System.out.print(“想要吃好吃的”);
   }
}
Class Woman{
  Public void eat(){
super.eat();
System.out.print(“不行,還是減肥吧”);
  }
}

2)  構造方法:調用超類中的構造方法,且必須放在第一行,否則出錯,代碼如下:

Class  Person{
   Person(){ }
}
Class Woman{
  Woman(){
    Super();
  }
}

注意:如果子類構造方法中既沒有顯示調用積累構造方法,而基類中又沒有午餐的構造方法,則編譯後出錯。

      這裏還有一點是需要大家注意的,在包含構造方法的初始化順序如下:

      1.主類的靜態成員首先初始化;

     2.主類的超類的構造方法按照從最高到最低的順序被調用;

     3.主類的非靜態對象(變量)初始化;

     4.調用主類的構造方法;

     總之,構造方法並不難理解,但是在我們應用的過程中要細心,這樣纔不會出錯。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章