初始化物件Constructor - Java備忘筆記 - GitBook
文章推薦指數: 80 %
建構子有幾個特點: · 1. 必須與類別名稱同名。
· 2. 不可以有回傳值。
· 3. 可以帶入引數(arguments)。
· 4. 主要功能為初始化物件,搭配new關鍵字被呼叫。
JJJava備忘筆記Search…JJJava備忘筆記IntroductionJava特性如何開始編譯並執行console編譯並執行Eclipse作者介紹BasicObject-Oriented類別、物件存取物件的欄位、方法初始化物件ConstructorBasicJavaProgrammingObjectOrientedProgrammingPoweredByGitBook初始化物件Constructor決定好類別的屬性及方法了,但我想在創造物件的同時對我的物件進行設定建構子,Constructor,又稱建構者涵式,在工程師使用new關鍵字來創造物件時被呼叫,用來初始化物件的資料欄位。
建構子的定義:classTest{Test([arguments]){//dosomeing}}建構子有幾個特點:1.必須與類別名稱同名。
2.不可以有回傳值。
3.可以帶入引數(arguments)。
4.主要功能為初始化物件,搭配new關鍵字被呼叫。
5.可以有多個建構子,但引數型態個數不可以相同。
來看看前一章節定義的類別:classHuman{Stringname;intage;intheight;voideat(){System.out.println("eating");}voidsleep(){System.out.println("Zzz");}}//endofclassHuman發現到!!我們根本沒有定義建構子阿阿阿,太扯了這樣還能動的話我幹嘛要知道建構子是什麼?先別急,如果沒有定義建構子的話,Humanh1=newHuman();new後面的那個Human()到底又是什麼!?!?原來Java知道有時候工程師只想設計類別,不需要利用到建構子去初始化欄位,因此只要你的類別中『沒有定義建構子』,那就會幫你定義一個『不帶參數』的建構子,而且這個建構子『沒有做任何事』,你連看都看不到XD以程式碼來看的話,Human這個class,看起來就像這樣:classHuman{Stringname;intage;intheight;/*Human(){//不帶參數,且不作任何事,Java幫你加上去的,你看不到,也不存在程式碼中}*/voideat(){System.out.println("eating");}voidsleep(){System.out.println("Zzz");}}//endofclassHuman因為Java有這麼貼心的設計,所以Humanh1=newHuman();才能順利動作,而不會錯誤。
設計建構子現在我們知道Java會很sweet的幫我們加上不帶參數不作任何事的建構子,但我就是需要建構子來幫我初始化物件阿!好,那先想想,我們需要建構子幫我們幹嘛?以上面定義的Human類別為例,假設我希望在創造物件的時候,順便幫我把物件的name這個欄位設定好,那我可以這樣寫我的建構子。
Human(Stringstr){name=str;}這樣我在創造物件的時候,就可以搭配new關鍵字在呼叫這個建構子,來達到我希望的結果。
classTest{publicstaticvoidmain(String[]args){Humanh1=newHuman("小木");//這行OKHumanh2=newHuman();//這行編譯錯誤}}在定義h1物件的時候,我們搭配了『代有一個字串參數的建構子』來初始化我們的物件,但為什麼在初始化h2物件的時候會出錯呢?明明在剛剛都是那樣寫的!!嗯要特別注意的是,Java只會在你『沒有任何建構子』的時候,幫你加上一個不帶參數的建構子,如果你自己有定義了建構子,那就不會幫你定義一個不帶參數的建構子。
如果你希望還是要有一個不帶參數的建構子的話,那很簡單,自己定義就行了:classHuman{Stringname;intage;intheight;Human(){//Java不會自動幫你加,如果你有需要可以自己寫}Human(Stringstr){//接收一個字串參數來設定namename=str;}Human(Stringstr,inta,intb){//當然也可以這樣一次設定完name=str;age=a;height=b;}voideat(){System.out.println("eating");}voidsleep(){System.out.println("Zzz");}}//endofclassHuman這個時候要定義物件就可以透過建構子很輕鬆的設定。
classTest{publicstaticvoidmain(String[]args){Humanh1=newHuman();Humanh2=newHuman("小婷");Humanh3=newHuman("小木",22,178);}//endofmain(String[])}//endofclassTestPrevious存取物件的欄位、方法NextBasicJavaProgrammingLastmodified1yragoCopylinkOutline建構子,Constructor,又稱建構者涵式,建構子的定義:建構子有幾個特點:設計建構子
延伸文章資訊
- 1Java 入門指南- 單元9 - 封裝與建構子 - 程式語言教學誌
檔名:ClassDemo04.java * 作者:張凱慶* 網站:http://kaiching.org */ package classdemo04; public class ClassDe...
- 2程式基礎概念 建構子 - iT 邦幫忙
建構式/建構函式/建構子(Constructor). 對類別做物件參數初始化,和類別(Class)名稱相同的方法。 無傳回值. 當我們使用new建立新物件時,程式會自動執行建構函式。
- 3PYDOING: Java 快速導覽- 物件導向概念建構子
實際上Java 物件是由建構子(constructor) 所創建的 建構子的名稱必須和類別(class) 名稱相同,後面接小括弧,類似方法(method) ,可以提供參數(parameter) ...
- 4Java Constructor 建構子方法的使用 - Java程式教學甘仔店
你是否要在創建時,做一下些事情。 如果沒有也可以不寫Constructor。 例如: 當你沒寫Constructor,也是可以創建類別物件成功。 public class TestDemo ...
- 5定義類別(Class) | Java SE 6 技術手冊 - caterpillar
與類別名稱同名的方法稱之為「建構方法」(Constructor),也有人稱之為「建構子」,它沒有傳回值,建構方法的作用是讓您建構物件的同時,可以同時初始一些必要的 ...