回答
通過默認構造函數,您的對象可能具有的任何屬性都設置爲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」。
你需要使用參數化的對象,只要你願意到任何類型的配置傳遞到你的對象。你可以用來設置這些信息,但是不僅在構造時間內傳遞這些信息的時間更短,更簡潔,而且它還有創建不可變對象的良好實踐,這些對象在構建後不能被修改,沒有安裝人員。例如,
class Student {
private final String name;
private final Date birthday;
public Student(String name, Date birthday) {
this.name = name;
this.birthday = birthday;
}
}
與任何面嚮對象語言一樣,使用構造函數方法爲對象分配和初始化內存。考慮到這一點,使用參數化構造函數方法將對象的屬性設置爲特定值,而默認值不會將任何值設置爲任何屬性。
除了路易·沃瑟曼所說的之外,還有很多情況下,從邏輯的角度來看,參數化構造函數是有意義的。假設你想創建一個Employee對象。員工必須具備某些屬性才能被視爲員工,例如姓名,社會安全號碼,公司以及薪水(奴隸制是非法的)。因此,使參數化構造函數需要上述4個變量是合乎邏輯的。
構造函數可以幫助類初始化並設置值,以傳遞給它的一些屬性。這可能是當前類的對象。 例如
class Education{
String typeOfEducation; //values are not set
String courseName;
Education(String type,String name){
typeOfEducation=type;
courseName=name; //values are set
}
}
希望這會有所幫助。
在Java中,構造函數是一種方法,它在使用new
運算符創建對象期間由Java運行時調用。創建構造函數的原因可能是:
- 要用默認或初始狀態初始化對象,因爲默認值可能不是您要查找的對象。例如,如果您有一個包含姓名和出生日期的人員類,則希望填充這些字段,而不是空的。因此,您可以將名稱和出生日期的值傳遞給該類的構造函數,以便爲該對象分配一個在該類中使用的值。
我很驚訝沒有人在這個線程提出重載。參數化的構造函數還使用戶能夠根據創建時的信息不同程度地設置對象。你可以用方法重載來做到這一點。
例如:
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/
- 1. Java中的參數化構造函數
- 2. Java反射中此構造函數的參數化類型是什麼?
- 3. 參數化構造函數的默認值是什麼意思?
- 4. nodejs使用的Error構造函數的參數是什麼?
- 5. 何時使用參數化方法VS參數的構造函數在Java中
- 6. 從C#中的參數化構造函數調用無參數構造函數?
- 7. 從參數化構造函數調用默認構造函數
- 8. 什麼構造函數中使用
- 9. servlet中的參數化構造函數
- 10. 爲什麼Java不提供默認構造函數,如果類具有參數化構造函數?
- 11. 爲什麼構造函數不是構造函數?
- 12. ArrayAdapter構造函數中的id參數是什麼資源?
- 13. 什麼是C++構造函數中的大括號參數11
- 14. Perl中IO :: Pipe構造函數的參數是什麼?
- 15. Lucene.NET - MultiFieldQueryParser構造函數中的Version參數是什麼?
- 16. OpenCL:cl :: Context構造函數中的屬性參數是什麼?
- 17. Java:爲什麼要使用方法而不是構造函數?
- 18. 什麼類型的java構造函數是這些?構造函數鏈接?
- 19. 爲什麼Java Swing中的JTable使用Vector作爲構造函數參數?
- 20. 在參數化構造函數中使用移動semantincs
- 21. 使用構造函數在Junit中進行參數化
- 22. 如何在參數化構造函數中使用枚舉?
- 23. 爲什麼Swift構造函數使用命名參數調用?
- 24. 統一使用默認構造函數和參數化構造函數c#
- 25. Coq中的構造函數是什麼?
- 26. 爲什麼Unity找不到我的參數化構造函數?
- 27. 無參數構造函數調用2參數構造函數
- 28. 爲什麼我無法從私有類中的參數化構造函數調用默認構造函數?
- 29. 什麼使合法的構造函數,什麼會使構造函數非法?
- 30. 在JavaScript中,什麼是構造函數?而什麼不是?
那麼你會使用參數化的構造函數,如果你想在創建時設置某些變量。前'學生s =新學生(「羅布」);' –
你用Google搜索了嗎? – Sachin