我要學會Java (二):物件導向其實很簡單 - Noob's Space

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

類別方法撰寫的方式和一般的方法基本上一樣,只是呼叫的時候,不需要建立物件就可以呼叫了。

把上面的範例加上建構子和類別方法大概是這樣: class ... 物件導向的三大特型:封裝、繼承、多型。

不過或許我們應該先來講類別和物件的關係。

在物件導向的世界裡,很多東西都是由一個一個物件構成的。

舉凡一些感覺很「具體」的東西都可以是物件,例如房子、XperiaZ5、杯子、橡皮擦、哈士奇、Noob……等等,而類別通常是一些比較籠統的東西,例如車、人、飛機之類的。

雖然也沒有規定那些東西一定是物件或類別,不過通常我們會在類別裡定義它的特性,並透過這個類別來建立一個物件。

類別 類別比較算是一個範本,裡面定義好該有的屬性和方法,其中方法又大概可以分為一般的方法、類別方法和建構子。

例如我們可以定義一個學生類別,裏面包含了name、score屬性,以及getName()方法、setScore()方法。

物件 物件則是實體的東西,由定義好的類別來建立一個物件。

例如Peter是一個學生、Amy是一個學生。

那麼Peter就會擁有Student類別的屬性和方法,所以Peter會有name、score屬性、getName()、setScore()方法,Amy也會有自己的name、score屬性、getName()、setScore()方法。

來寫個範例: classStudent{ publicStringname; publicintscore; publicvoidgetName(){ returnname; } publicvoidsetScore(ints){ score=s; } } publicclassclass_test{ publicstaticvoidmain(String[]agrs){ StudentPeter=newStudent(); Peter.setName("Peter"); Peter.score=88; StudentAmy=newStudent(); Amy.setName("Amy"); Amy.score=85; } } 不過,建立一個物件後,就得手動給屬性,還是有點麻煩。

在類別裡面放建構子,就可以在建立物件的時候,把所有屬性一次給完。

建構子的寫法大概是這樣: Student(Stringn,ints){ name=n;score=s; } 值得注意的是,建構子前面不得加任何修飾,而且名字要和類別名稱一模一樣。

最後要講的是類別方法,類別方法又稱靜態方法,所以宣告方法的時候加一個static就可以了。

類別方法撰寫的方式和一般的方法基本上一樣,只是呼叫的時候,不需要建立物件就可以呼叫了。

把上面的範例加上建構子和類別方法大概是這樣: classStudent{ publicStringname; publicintscore; Student(Stringn,ints){ name=n; score=s; } publicvoidgetName(){ returnname; } publicvoidsetScore(ints){ score=s; } publicstaticvoidhelloWorld(){ System.out.println("Hello,World!"); } } publicclassclass_test{ publicstaticvoidmain(String[]agrs){ StudentPeter=newStudent("Peter",88); StudentAmy=newStudent("Amy",85); Student.hellowWorld(); } } 這樣就是最基本的類別和物件之間的關係了。

物件導向的封裝性 封裝(Encapsulation),簡單來說就是抽象(Abstract)的概念。

對一件事情只需要理解他的外在就好,不需要了解裡面內部的構造。

就像我們只要知道看電視的時候該怎麼轉台、調音量,並不需要知道裡面有多少電線和構造。

而我們在寫類別的時候,把類別定義完,之後要寫物件就只要指定屬性和方法就好,並不需要知道方法是怎麼實作的。

這也是一種封裝性。

物件導向的繼承性 繼承(Inheritance),要設計一張和原有設計很像的設計圖,可以拿原本的設計圖當底開始畫。

這樣就不需要把相同的東西再宣告一次。

比方說一個經典的例子,如果有一個Car類別: classCar{ publicStringplate; publicStringbrand; publicStringcolor; } 記載了車牌、廠牌、顏色三個屬性。

如果要多新增一個Taxi類別,可以直接繼承Car屬性來用: classTaxiextendsCar{ publicStringplate; publicStringbrand; publicStringcolor; publicStringdriver; } 這就是經典的計程車繼承車XD。

物件導向的多型性 多型(Polymorphism),簡單來說就是同名的方法。

多個相同名稱的方法,傳入不同的參數,會執行不同的敘述。

比方說,一個計算面積的方法,如果傳入一個參數,就當正方形來算面積;傳入兩個參數,就當成長方形來算面積。

publicintcomputeArea(intlength){ returnlength*length; } publicintcomputeArea(intlength,intwidth){ returnlength*width; } 其實多型包含多載(Overloading)和複寫(Overriding),不過暫時知道多載就好了。

以上就是物件導向的三個特性,不過,物件導向協助我們解決了什麼樣的問題?以下引用Ruby使用手冊: 物件導向程式設計能夠將單調而重複的邏輯工作委派予資料,把我們對資料的概念從被動轉為主動。

換而言之, 資料不再是一個開蓋盒子,只能讓我們自己去找東西或放東西進去。

資料變成是能夠運作的機器,具有標示明確的開關與功能。

上述的「機器」內部可能非常複雜,也可能非常簡單,並不能單以外部作出判斷,我們不會隨意拆開機器(除非我們非常確定設計出現問題),所以我們只需要按按開關,了解有甚麼功能可以與資料互動。

機器做好後,我們就不會再去想它是如何運作了。

好啦Java筆記暫時整理到這邊,大概也沒時間補充了QQ。

我要學會Java目錄 我要學會Java(一):Java基本介紹 我要學會Java(二):物件導向其實很簡單 我們正降低廣告比例以提升閱讀體驗。

如果你喜歡這篇文章,不妨按下Like按鈕或分享到社群,以行動支持我寫更多文章。

當然,你也可以 點此用新臺幣支持我,或 點此透過BTC、ETH、USDC等加密貨幣支持我。

分享到: 也想架個不錯的部落格,寫些不錯的文章嗎? 本站熱門文章: 如何拍下螢幕畫面?截圖別再截全螢幕了! API實作(一):規劃RESTfulAPI要注意什麼 一補數與二補數 ufw:簡易防火牆設置 常見的五個開源專案授權條款,使用軟體更自由 技術好康: 免費100USD額度|DigitalOcean:俗擱大碗的VPS空間,是時候該做點更進階的事了? 只要一折,5USD用5年|IvacyVPN HostedonDigitalOcean 身為一個工程師,就是一天到晚在看不同的程式語言、不同的環境,偶爾這個專案用這個語言、那個專案用那個套件,常常會需要上網查該怎麼做才好。

這次介紹的cheatsheet,讓你可以不用離開terminal就查到想找的說明。

MovaviVideoConverter支援180種影片格式,有Windows和Mac兩種版本,除了簡單的影片轉檔外,這軟體也支援外掛字幕到影片中,更支援AI無損放大功能! TDX運輸資料流通服務平臺,是交通部為落實智慧運輸政策而制定的資料整合服務平臺。

平臺上可以取得「公共運輸整合資訊」,包含公車、火車、自行車等等資訊,也可以取得「即時路況與停車資訊」,例如高速公路路況、高速公路看板上的資訊、各縣市停車場剩餘車位數等等。

TDX平臺也提供了路段編碼、圖資定位等服務,例如輸入經緯度得到這個地點的路名、輸入地址取得經緯度服務等等,基本上所有跟交通有關的API服務都整合起來了。



請為這篇文章評分?