精華區beta b865060xx 關於我們 聯絡資訊
我發現很多同學可能對java與oop的觀念還一知半解吧! 所以我就來小賺一點錢好了 首先,java和smalltalk類似,是屬於full-oo的語言 也就所有的東西都包在一堆class裡面(雖然令人不大習慣的還包了main,不倫不類) 在oo的世界裡 所有我們要做的事,就是叫一個一個的object去工作…… 在這裡先解釋三個名詞:class、instance、object class一般翻做類別,是指用以做出實體物件的藍圖而言 而instance就是用藍圖create出來的東西 object則是個很混亂的名詞,早期是和instance有一樣的意思,不過現在好像越來越亂了 所以我們盡量不要用好了 我們可以簡單的看一個例子: class ROBOT{ int xpos,ypos; public ROBOT(int x,int y){ xpos=x; ypos=y; } public void moveleft(){xpos--;} public void moveup(){ypos--;} public void moveright(){xpos++;} public void movedown(){ypos++;} public void showpos(){ System.out.println(""+xpos+","+ypos); } } 這是一個用來做機器人的「藍圖」,這個藍圖裡記了什麼呢? 裡頭規劃了記錄機器人位置的變數(機器人必須知道自己的位置) 還規劃了怎樣「做」(初使化)這台機器人(我們稱作「建構函數」,它必須和class 名稱相同) 還規劃了這個機器人會做什麼(移動,告訴我們他的坐標) 那現在我們要做什麼呢? 我們要用這個藍圖去做出一台機器人 指令如下: ROBOT CharlieL=new ROBOT(20,20); 這其實是由兩行組成的 ROBOT CharlieL; CharlieL=new ROBOT(20,20); 第一行說我們想用做一個叫CharlieL的機器人(實際上是做了一個可以貼在機器人上的 標籤叫CharlieL) 第二行是叫工廠(new)去幫我們做一個機器人,然後把準備好的標籤貼上去 這時候我們就有一個機器人叫CharlieL了 CharlieL是一個instance 裡面有按照藍圖規劃好的xpos,ypos兩個變數(又稱「成員變數」) 並有規劃好的功能(移動、告訴我們位置)(又稱「成員函數」) 這兩項就是物件導向最基礎的觀念 而我們就可以透過直覺的語言來告訴CharlieL要做什麼事 CharlieL.moveright(); //向右走一步 CharlieL.showpos(); //告訴我你的座標 先簡單的說到這裡吧! 複習一下: 我們用ROBOT class 做為藍圖叫new工廠去造出了一個CharlieL instance 描述這個instace所需要的變數(member variable)與這個instance所能做的工作 (member function)以及做出這個instance的方法(constructor)都清楚的記在class 裡…… 如果你了解以上的幾句話 那恭喜你已經進了物件導向的大門了…… -- 陷入難過的時候 你就擁有了讓自己更快樂的空間…… 感覺失意的時候 你就掌握了讓自己得意起來的權利…… -- ※ 發信站: 批踢踢實業坊(ptt.m8.ntu.edu.tw) ◆ From: 139.175.246.153