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呼叫構造方法,兩者不能同時
三.構造方法的作用
1.為了初始化成員屬性,而不是初始化物件,初始化物件是通過new關鍵字實現的2.通過new呼叫構造方法初始化物件,編譯時根據引數簽名來檢查建構函式,稱為靜態聯編和編譯多型
(引數簽名:引數的型別,引數個數和引數順序)
3.建立子類物件會呼叫父類構造方法但不會建立父類物件,只是呼叫父類構造方法初始化父類成員屬性;