Inner Class)、自訂資料型態@ Penguin 工作室,一起JAVA吧!
文章推薦指數: 80 %
事實上我們撰寫的JAVA程式都是包含在一個類別(Class)裡面的,像是先前我們所建立的public class HelloWorld { }就是一個類別,在類別中我們可以宣告變數、方法等, ...
Penguin工作室,一起JAVA吧!曾經以為這輩子不會走上寫程式這條路。
但當我逐漸創作出更多作品,我知道我樂在其中。
沒錯,寫程式是創作。
發揮你的創意DNA,一起JAVA吧!日誌相簿影音好友名片
201201312108類別(Class、InnerClass)、自訂資料型態?JAVA入門篇 事實上我們撰寫的JAVA程式都是包含在一個類別(Class)裡面的,像是先前我們所建立的publicclassHelloWorld{}就是一個類別,在類別中我們可以宣告變數、方法等,當然也可以宣告類別。
我們來看一個簡單的例子:
publicclassHelloWorld{ publicstaticvoidmain(String[]args){ Cubecube=newCube(); cube.length=2; cube.width=5; cube.hight=3; System.out.println(cube.volume()); } classCube{ intlength; intwidth; inthight; publicintvolume(){ returnlength*width*hight; } } }
在我們的HelloWorld類別下方,我們可以直接宣告一個類別,宣告方式為classCube,Cube就是這個類別的名稱,和HelloWorld是一樣的,在這個宣告的類別裡面我們一樣可以宣告變數及方法,例如上例中我們在Cube裡面宣告了三個整數變數length、width、hight,以及一個方法volume(),這個方法會回傳Cube這個類別中length、width、hight相乘的結果。
在HelloWorld類別中我們就可以來建立一個Cube類別型態的物件,建立物件的方法為Cubecube=newCube();,其中Cube是類別的名稱,cube則是我們建立的物件的名稱,接著我們可以指定物件的欄位值,也就是length、width、hight,並呼叫物件的方法volume(),就像我們在使用String(字串)、Array(陣列)等物件一樣。
上例中的Class我們稱作InnerClass,也就是說只有在HelloWorld裡面可以使用,通常當外部的程式不需要知道這個類別的存在時,我們就會使用這樣的方法,例如:
publicclassOutCube{ Cubecube =newCube(); cube.length=2; cube.width=5; cube.hight=3; publicvoidprintVolume(){ System.out.println(cube.volume()); } classCube{ intlength; intwidth; inthight; publicintvolume(){ returnlength*width*hight; } } }
這時候如果有外部程式需要使用OutCube,只要呼叫OutCube的printVolume()把數值印出來,不需要知道事實上OutCube裡面還有Cube這個物件:
publicclassHelloWorld{ publicstaticvoidmain(String[]args){ OutCubeoutcube=newOutCube(); outcube.printVolume(); } }
若是其他程式需要使用這個類別,我們就必須把這個類別獨立出來,事實上當程式更加複雜時,我們可能會建立許多類別,這些類別往往代表著一個物件或是一個作業,像是校務系統中可能會有一個類別是學生資料,裡面紀錄了學生的學號、姓名等變數,也宣告了計算學分等方法,這時候學生就是一個物件,每個學生物件都會有這些變數及方法,另外可能有一個類別叫做瀏覽學生,這個類別會把所有學生的資料列出來,這就是一項作業。
因此一套完整的系統應該會由很多類別所組成。
publicclassStudent{ Stringname; Stringphone; Stringaddress; Stringclass; }
上例中我們示範了Student(學生)這個類別,當系統任何地方需要使用到學生資訊時,都可以用這個類別傳遞資料,我們也可以進一步將類別內的欄位訂定為private,再用public或protected的方法來取得:
publicclassStudent{ privateStringname; privateStringphone; privateStringaddress; privateStringclassName; publicStringgetName(){ returnname; } publicvoidsetName(Stringname){ this.name=name; } publicStringgetPhone(){ returnphone; } publicvoidsetPhone(Stringphone){ this.phone=phone; } publicStringgetAddress(){ returnaddress; } publicvoidsetAddress(Stringaddress){ this.address=address; } publicStringgetClassName(){ returnclassName; } publicvoidsetClassName(StringclassName){ this.className=className; } }
這樣一來不但可以控制物件存取的權限,也可將存、取的操作分開處理。
若您使用eclipse開發,可以在將物件的欄位定義好之後,選擇Source->GenerateGettersandSetters...,eclipse將會自動幫您產生getter和setter方法:
另外,類別中可以自訂所謂的建構子(constructor),建構子是當類別被建立時,就會執行的程式,可用在設定參數或某些物件一建立就必須執行的程式,用法如下:
classCube{ intlength; intwidth; inthight; publicCube(intlength,intwidth,inthight){ this.length=length; this.width=width; this.hight=hight; } }
上例中Cube()這個方法就是建構子,建構子必須和class名稱相同,所以當我們執行newCube()的時候,Cube()裡面的程式就會執行了,相對的,因為我們訂定了Cube這個類別的建構子Cube()必須帶入三個整數參數,所以建立Cube物件的時候就必須要帶入,例如: Cubecube=newCube(2,3,5);
而自訂的類別可以搭配容器(Container)的使用達到更完整的功能,關於容器將在下一章節做介紹。
劉蓁/Xuite日誌/回應(0)/引用(0)沒有上一則|日誌首頁|沒有下一則回應
全部展開|全部收合
關鍵字
jane17512001's新文章視窗程式JavaSwing-常用元件視窗程式JavaSwing-基本設定及LayoutXMPP即時通訊Queue(佇列)、ConcurrentLinkedQueue遞迴(Recursion)以及求解最大公因數log4j日誌記錄正則表示式(Regularexpression)HTTP連線(HttpURLConnection、HttpClient)ResourceBundleFTP檔案傳輸(apache.common.net.ftp)
BloggerAds
延伸文章資訊
- 1Java :: 定義類別
如何使用Java 告訴電腦衣服的設計圖呢?你會先在程式中定義類別,這相當於上圖中衣服的設計圖:. class Clothes { String color; char size; }.
- 2類別函數 - Java 學習系列
類別變數:物件共享,佔用在同一個記憶體. 類別函數:可以直接呼叫. 類別函數的定義方式也是相同的:. 加上static 就可以定義為類別函數.
- 3Inner Class)、自訂資料型態@ Penguin 工作室,一起JAVA吧!
事實上我們撰寫的JAVA程式都是包含在一個類別(Class)裡面的,像是先前我們所建立的public class HelloWorld { }就是一個類別,在類別中我們可以宣告變數、方法等, ...
- 4定義類別(Class) | Java SE 6 技術手冊 - caterpillar
在Java 中使用"class" 關鍵字來定義類別,使用類別來定義一個物件(Object)時,會考慮這個物件可能擁有的「屬性」(Property)與「方法」(Method)。
- 5我要學會Java (二):物件導向其實很簡單 - Noob's Space
類別方法撰寫的方式和一般的方法基本上一樣,只是呼叫的時候,不需要建立物件就可以呼叫了。 把上面的範例加上建構子和類別方法大概是這樣: class ...