1. 程式人生 > >java中的構造方法的使用及作用分析

java中的構造方法的使用及作用分析

java中構造方法是一個重要的概念,初學時有人會對此構造方法的使用特別是其作用不清楚,下面我就來談談我對java中構造方法的理解,有不對或不清楚的地方希望各位看官提出意見,謝謝!

一.構造方法的定義宣告

構造方法的名字必須和所在類的名字一致沒有返回值,但不能宣告void訪問許可權可以為任意,但是一般情況下使用public方法許可權,構造方法中的引數可以根據需要自行定義,引數的不同的構造方法構成過載;

  例:

class Fu

   {

     public Fu(){} //無參的公有構造方法

     public Fu(int i){} //引數型別為int的公有構造方法

     ......

   }

   public class Demo extends Fu

   {

     public Demo(){} //無參的公有構造方法

     public Demo(int i){} //引數型別為int的公有構造方法

     public Demo(int i,double d){} //引數型別為int和double的公有構造方法

     ...

   }

二.構造方法的使用

 java中構造方法的使用有兩個地方,一個是跟在關鍵字new後面,類名加上一個小括號(),小括號內根據實際加上實參,另外一個是跟在關鍵字super或this後加上一個小括號(),小括號內根據實際新增實參

,下面進行舉例。

 例1:

Demo demo = new Demo(); //這裡是呼叫的是一個無參的構造方法,必須宣告在方法中,最好宣告在主方法

 上面構造方法的引數根據實際新增實參,jvm根據構造方法的引數不同載入不同的構造方法;

 例2:

public Demo(){

   this(2); //這裡呼叫引數為int型別的本類的構造方法

 }

 例3:

public Demo(){

   super(1); //呼叫引數為int型別的父類的構造方法

 }

 注意:例2和例3中this或super呼叫構造方法只能出現在構造方法中,而且必須出現在第一行,所以一個構造方法中第一行只能為this或super呼叫構造方法,兩者不能同時

呼叫構造方法出現,而且注意this或super呼叫構造方法時,要留構造方法出口,意思就是最後呼叫的構造方法中沒有再呼叫別的構造方法!

三.構造方法的作用

 1.為了初始化成員屬性,而不是初始化物件,初始化物件是通過new關鍵字實現的

 2.通過new呼叫構造方法初始化物件,編譯時根據引數簽名來檢查建構函式,稱為靜態聯編編譯多型
 (引數簽名:引數的型別,引數個數和引數順序)
3.建立子類物件會呼叫父類構造方法但不會建立父類物件,只是呼叫父類構造方法初始化父類成員屬性