2016-01-13 133 views
-4

我是一個java初學者,我想以簡單的方式知道爲什麼你應該使用參數化構造函數,而不是編譯器提供的默認構造函數。在java中使用參數化構造函數是什麼?

感謝

+0

那麼你會使用參數化的構造函數,如果你想在創建時設置某些變量。前'學生s =新學生(「羅布」);' –

+0

你用Google搜索了嗎? – Sachin

回答

0

通過默認構造函數,您的對象可能具有的任何屬性都設置爲0,false等等。如果你想立即設置屬性,你可以使用參數化的構造函數。當然,使用你自己的構造函數也可以讓你在創建對象之前(技術上是while)執行代碼。

順便說一句:「默認不會給屬性設置任何值」的答案是錯誤的。例如,此代碼:

public class Test { 
    private int test; 
    private boolean test2; 

    public static void main(String[] args) { 
     Test test = new Test(); 
     System.out.println(test.test); 
     System.out.println(test.test2); 
    } 
} 

將打印出「0」和「false」。

2

你需要使用參數化的對象,只要你願意到任何類型的配置傳遞到你的對象。你可以用來設置這些信息,但是不僅在構造時間內傳遞這些信息的時間更短,更簡潔,而且它還有創建不可變對象的良好實踐,這些對象在構建後不能被修改,沒有安裝人員。例如,

class Student { 
    private final String name; 
    private final Date birthday; 
    public Student(String name, Date birthday) { 
    this.name = name; 
    this.birthday = birthday; 
    } 
} 
0

與任何面嚮對象語言一樣,使用構造函數方法爲對象分配和初始化內存。考慮到這一點,使用參數化構造函數方法將對象的屬性設置爲特定值,而默認值不會將任何值設置爲任何屬性。

0

除了路易·沃瑟曼所說的之外,還有很多情況下,從邏輯的角度來看,參數化構造函數是有意義的。假設你想創建一個Employee對象。員工必須具備某些屬性才能被視爲員工,例如姓名,社會安全號碼,公司以及薪水(奴隸制是非法的)。因此,使參數化構造函數需要上述4個變量是合乎邏輯的。

0

構造函數可以幫助類初始化並設置值,以傳遞給它的一些屬性。這可能是當前類的對象。 例如

class Education{ 
     String typeOfEducation;  //values are not set 
     String courseName;   
Education(String type,String name){ 
typeOfEducation=type; 
courseName=name;     //values are set 
       } 
        } 

希望這會有所幫助。

0

在Java中,構造函數是一種方法,它在使用new運算符創建對象期間由Java運行時調用。創建構造函數的原因可能是:

  • 要用默認或初始狀態初始化對象,因爲默認值可能不是您要查找的對象。例如,如果您有一個包含姓名和出生日期的人員類,則希望填充這些字段,而不是空的。因此,您可以將名稱和出生日期的值傳遞給該類的構造函數,以便爲該對象分配一個在該類中使用的值。
0

我很驚訝沒有人在這個線程提出重載。參數化的構造函數還使用戶能夠根據創建時的信息不同程度地設置對象。你可以用方法重載來做到這一點。

例如:

public Car(long vin){ 
    this.vin = vin; 
} 

將設立一個汽車對象僅與VIN號碼,而這樣的:

public Car(long vin, String make){ 
    this.vin = vin; 
    this.make = make; 
} 

將創造額外的信息類似的Car對象。除了重載之外,您還應該考慮複製構造函數以獲得「淺」與「深」對象副本的想法。以下鏈接有一個體面的例子:http://www.geeksforgeeks.org/copy-constructor-in-java/

相關問題