天天看點

構造方法

構造方法(structuremethod)

解析:在java中,任何變量在被使用前都必須先設定初值.java提供了為類的成員變量賦初值的專門功能:構造方法(constructor)構造方法是一種特殊的成員方法,構造方法:方法名與類名一樣,沒有傳回值包括void。

注意:

1、    構造方法不能通過對象名.方法來調用,通過new關鍵字來調用。   // a.animal();不能這樣調用,因為構造方法隻能用new關鍵字來調用!

2、    若在一個構造方法中想要調用另一個方法裡的構造方法,使用this關鍵字,表示對目前對象的一個引用!this()括号裡的參數表示目标構造方法的參數,this應該放在構造方法中的第一條語句,之前不能有可執行的代碼。因為在生成執行個體的時候,構造方法優先調用。

例如:public animaltest()

   {

      system.out.println("animal");

   }

   public animaltest(string name)

      this();//隻能放在第一行

      system.out.println("animal" + name);

3、    構造方法的名字必須與定義他的類名完全相同,沒有傳回類型,甚至連void也沒有。

例如:

public class animaltest

{

   public animaltest()

}

4、    構造方法的調用是在建立一個對象時使用new操作進行的。構造方法的作用是初始化對象。

animaltest a = new animaltest("dog");

5、    每個類可以有零個或多個構造方法.

6、    不能被static、final、synchronized、abstract和native修飾。構造方法不能被子類繼承。

7、    構造方法在建立對象時自動執行,一般不能顯式地直接調用.

8、    構造方法可以被重載。沒有參數的構造方法稱為預設構造方法,與一般的方法一樣,構造方法可以進行任何活動,但是經常将他設計為進行各種初始化活動,比如初始化對象的屬性。

public class animal{

   public animal(){

     system.out.println("animal");

   public animal(string name){

     system.out.println("你的名字是"+name);

   public static void main(string[] args) {

         animal a=new animal();

     //a.animal();不能這樣調用,因為構造方法隻能用new關鍵字來調用!

      animal a2=new animal("mary");

繼承中的構造方法

1、    子類的構造的過程中必須調用其基類的方法。

2、    子類可以在自己的構造方法中使用super(參數清單)調用基類的構造方法。super在繼承中尋找父類帶參數的構造方法。對父類對象的引用。如果子類使用super()顯式調用父類的某個構造方法,那麼在執行的時候就會去尋找與super所對應的方法,而不會再去尋找父類不帶參數的構造方法,super也必須放在可執行語句的第一行。

使用this(參數清單)調用本類另外的構造方法。this在構造方法中尋找另一個方法裡帶參數的構造方法。

3、    如果使用super,必須寫在子類構造方法的第一行。

4、    如果子類的構造方法中沒有顯示地調用基類構造方法,則系統預設調用基類無參數的構造方法。

5、    如果子類的構造方法中既沒有顯示調用基類構造方法,而基類中又沒有無參數的構造方法,則編譯出錯。

6、    當生成子類對象時,java預設首先調用父類的不帶參數的構造方法,然後執行該構造方法,生成父類的對象。接下來,再去調用子類的構造方法,生成子類的對象。(要想生成子類的對象,首先必須生成父類的對象,沒有父類的對象就沒有子類的對象。例如:沒有父親就沒有孩子。)

執行個體代碼精講:

public class animal

   public animal()

   public animal(string str){

      system.out.println("animal stris"+str);

   public static void main(string[] args)

      animal d = new dog();//多态的一種展現

      dog d2=new dog("dog");

class dog extends animal

   public dog()

      super("animal");

      system.out.println("dog");

   public dog(string str){

      system.out.println("dog str is"+str);

輸出結果為:

animal str isanimal//調用父類animal帶參數的構造方法

dog//執行自己的方法

animal //調用父類不帶參數的構造方法。

dog str is dog//執行自己的方法