Inner Class)、自訂資料型態@ Penguin 工作室,一起JAVA吧!

文章推薦指數: 80 %
投票人數:10人

事實上我們撰寫的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



請為這篇文章評分?