1. 程式人生 > >java中的構造方法

java中的構造方法

初始化 靜態聯編 color 出口 參數類型 out 默認 args -s

構造方法就是與類同名的那個方法,它的作用是可以用來初始化

class Person{
public Person(String n,int a){ //構造方法
name = n;
age = a;
System.out.println(n+""+a);
}
private String name;
private int age;
public static void main(String[] args){
Person p = new Person("張三",14);//這就是作用

}
}

一.構造方法的定義聲明
構造方法的名字必須和所在類的名字一致,沒有返回值,但不能聲明void,訪問權限可以為任意

new一個對象的時候要用到構造函數,例如Hello hello = new Hello();這時調用的是Hello的無參數構造方法;Hello hello = new Hello("hi");這個是調用Hello有參數構造方法,在JAVA中如果不寫構造方法的話,會默認加上一個無參數的構造方法,但是如果已經有了一個有參數的構造方法,那麽無參數的構造方法就不會默認被加上.如果Hello類中已經有了一個有參數的構造方法,這時再使用 Hello hello = new Hello();來創建對象的時候就會出錯,這就是為什麽書上要強調寫了有參數的構造方法就最好加一個無參數的構造方法,參數的不同的構造方法構成重載;

例:

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.創建子類對象會調用父類構造方法但不會創建父類對象,只是調用父類構造方法初始化父類成員屬性;
---------------------
作者:demo_h
來源:CSDN
原文:https://blog.csdn.net/u010785140/article/details/46963457
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!

java中的構造方法