我發現很多同學可能對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