閱讀本文約「2.1分鐘」。segmentfault
當你在設計類時,要記得對象時靠類的模型塑造出來的,你能夠這樣看:測試
——對象是已知事物設計
——對象會執行的動做對象
對象自己已知的事物稱爲實例變量,它們表明對象的狀態(數據),且該類型的每個對象都會獨立的擁有一份該類型的值。繼承
因此你也能夠把對象看成爲實例。內存
對象能夠執行的動做稱爲方法。在設計類時,你也會設計出操做對象數據的方法。對象帶有讀取或操做實例變量的方法是很常見的情形,舉例來講,鬧鐘對象會有個變量來保存響鈴時間,且會有getTime()與setTime()這兩個方法來存取該時間。get
所以說對象帶有實例變量和方法,但它們都是類設計中的一部分。虛擬機
類與對象二者之間有什麼不一樣呢?變量
類不是對象(倒是用來建立它們的模型),類是對象的藍圖,它會告訴虛擬機如何建立某種類型的對象。根據某類建立出的對象都會有本身的實例變量。擴展
也能夠這麼說,對象就好像通信簿中的一筆數據。
通信簿的每張卡片都有相同的空白字段(實例變量)。填入新的聯繫人就如同建立新的實例(對象),填入卡片的數據表明聯絡人的狀態。
這個卡片類上的方法就是你會對卡片做的事情:getTel(),changeAddress(),deleteCard()等。
因此每張卡可以執行相同的動做,但取出的結果應該是依每張卡片各自獨立的。
要做出哪些東西纔會運用對象呢?你須要兩個類,一個是要被操做於對象的類,另外一個是用來測試該類的類。測試用的類帶有main()而且你會在其中創建與存取被測的對象。
待在main()中對於一個測試用的程序來講是還好的,但對於貨真價實的面向對象應用程序來講,你會須要用對象來與對象交互。
main()的兩種用途:
——測試真正的類
——啓動你的Java應用程序
真正的Java程序只會讓對象與對象交互,此處所說的交互是指相互調用方法。
Java的自動回收
建立對象時,它會被存放在成爲堆的內存區域彙總,無論對象如何建立都會放在此區域中。此區域並不是普通的堆;它是可回收垃圾的堆(Garbage-CollectibleHeap)。Java會根據對象的大小來分配內存空間。好比說15個實例變量的對象所佔用的空間就可能會比只有兩個實例變量的對象要大。但對象使用完畢時內存要如何回收呢?Java會主動幫你管理內存!當某個對象唄Java虛擬機察覺再也不會被使用到,該對象就會被標記成可回收的。若是內存開始不足,垃圾收集器就會啓動來清理垃圾、回收空間,讓空間可以再次被利用。
面向對象設計擴展功能不須要改動以前已經測試好的程序代碼。
全部的Java程序都定義在類中。
類如同藍圖描述該類型的對象要如何建立。
對象自治,你無需在乎它如何完成任務。
對象有已知的事物,並能執行工做。
對象自己已知道的事物成爲實例變量,它表明對象的狀態。
對象可執行的動做稱爲方法,它表明對象的行爲。
建立類時,可能同時會須要建立獨立、測試用的類。
類能夠繼承自較爲抽象的父類。
Java的程序在執行期是一組會互相交談的對象。
本文已轉載我的技術公衆號:UncleCatMySelf
歡迎留言討論與點贊
上一篇推薦:【Java貓說】案例談面向對象
下一篇推薦:【Java貓說】主數據類型和引用