這章主要內容講方法,書中章節名字叫對象的行爲,在之前章節中,我們描述過類是藍圖,是我們工程師的設計圖,設計出一個個對象,對象又有自己的實例變量值,那麼方法呢?
方法被稱爲對象的行爲,根據不同類,有不同的方法,比如人類,我們可以給他定義一些 跑 唱 跳的方法,那麼每個不同人(對象)他們都能執行這些方法。
在書中第73頁定義了狗的類,定義了狗的兩個屬性,一個是大小,一個名字,還有一個方法,根據狗不同的大小,叫的聲音也不一樣,在定義了一個dog類型對象時候,對象就可以通過原點標識符,也就是英文的小數點.就可以調用對象的屬性及方法。
在java學習第三天時候我寫了一個例子,關燈的方法, light1.turnOff(light1); 在調用turnOff這個方法的時候,要傳入對應的實參(實際參數) 比如turnOff 要求傳入的是Light 類型的參數,那麼調用的時候 傳入的一定要是 Light類型
public void turnOff(Light L) {//誰調用關燈方法的時候 都要傳關燈的對象過來,這樣我才知道是哪個燈要關
L.lightNum = 0;//關閉燈了,就將燈泡的亮度變爲0
System.out.println("關閉後亮度 :"+L.lightNum );
}
調用方式代碼
Light light1 = new Light();
//燈1執行關燈 調用關燈方法時候將燈1這個對象傳過去
light1.turnOff(light1);
整個類完整代碼
class Light{
int lightNum;
public static void main (String[] args) {
//創建Light對象
Light light1 = new Light();
//燈1執行關燈 調用關燈方法時候將燈1這個對象傳過去
light1.turnOff(light1);
//燈1亮度設爲99
light1.lightNum = 99;
// 創建Light數組
Light [] mylight = new Light[3];
mylight[0] = new Light();
mylight[1] = new Light();
mylight[2] = light1;
// 通過數組引用存取Light
mylight[0].lightNum = 100;
mylight[1].lightNum = 50;
//把燈全關
int x = 0;
while(x<mylight.length){//數組有個length的變量,能返回元素,通常用在循環,判斷
System.out.println("關閉前燈泡亮度 :"+mylight[x].lightNum );
mylight[x].turnOff(mylight[x]);
x = x+1;
}
}
public void turnOff(Light L) {//誰調用關燈方法的時候 都要傳關燈的對象過來,這樣我才知道是哪個燈要關
L.lightNum = 0;//關閉燈了,就將燈泡的亮度變爲0
System.out.println("關閉後亮度 :"+L.lightNum );
}
}
在書中是從74-79頁。而方法有些情況是需要返回的 如果將關燈方法改成有返回的那麼代碼如下
public int turnOff(Light L) {//誰調用關燈方法的時候 都要傳關燈的對象過來,這樣我才知道是哪個燈要關
return 0;//返回值爲0
}
調用時候還是要對象去調用,但是返回的值要賦值給 燈的亮度
//創建Light對象
Light light1 = new Light();
//燈1執行關燈 調用關燈方法時候將燈1這個對象傳過去
light1.lightNum = light1.turnOff(light1);//將返回的值賦值給燈的亮度
全部完整代碼
class Light{
int lightNum;
public static void main (String[] args) {
//創建Light對象
Light light1 = new Light();
//燈1執行關燈 調用關燈方法時候將燈1這個對象傳過去
light1.lightNum = light1.turnOff(light1);
System.out.println("111關閉後燈泡亮度 :"+light1.lightNum );
//燈1亮度設爲99
light1.lightNum = 99;
// 創建Light數組
Light [] mylight = new Light[3];
mylight[0] = new Light();
mylight[1] = new Light();
mylight[2] = light1;
// 通過數組引用存取Light
mylight[0].lightNum = 100;
mylight[1].lightNum = 50;
//把燈全關
int x = 0;
while(x<mylight.length){//數組有個length的變量,能返回元素,通常用在循環,判斷
System.out.println("關閉前燈泡亮度 :"+mylight[x].lightNum );
mylight[x].lightNum = mylight[x].turnOff(mylight[x]);
System.out.println("關閉後燈泡亮度 :"+mylight[x].lightNum );
x = x+1;
}
}
public int turnOff(Light L) {//誰調用關燈方法的時候 都要傳關燈的對象過來,這樣我才知道是哪個燈要關
return 0;
}
}
運行結果
有返回跟沒返回的方法都介紹了,調用的時候傳入的參數 稱爲實參,也就是實際傳入的參數,而方法定義要求的參數叫做形參,這個也介紹了,不懂得書上74-79再看一遍
java面向三大特性繼承我們在第一章的時候有稍微提一下,今天講第二個特性叫 封裝,書中是80-82頁,在最常用的方法中數一數二的兩個方法肯定是get跟set
在書中的例子裏,get set是用於獲取dog這個類的大小,get是爲了獲取大小的值,所以肯定是有返回的,size的類型是int類型,所以返回的是int類型
public int getSize(){
return size;
}
而set這個是給對象設置size,因爲這個方法不需要返回,所以用void,而且要設置修改size 需要修改的大小需要由對象調用時候傳入的實參來定義,所以這邊要寫好形參 要求是int類型 的變量名可以自己定義 不要關鍵字就可以,然後將變量賦值給size這樣就可以改變了size
public void setSize(int s){
size = s;
}
這樣就會出現下面兩種情況,例如當我有個燈每次需要獲取狀態或者修改燈的屬性的時候,我只要去get set調用就可以了,封裝好了方法,多個地方都能使用,而且安全性能也高
專業的描述 :提高了代碼的安全性,提高了代碼的可讀性和複用性
83頁的數組對象的行爲 看上面燈泡的循環全關的方法就是就
在85講了一個實際變量跟局部變量,其實就兩句話,實際變量是定義在類中,而局部變量是定義在方法
像我們經常在方法寫的用於判斷循環次數,就是局部變量也是最常用的一種方式。
第86頁是變量的比較,這個看下就好了沒什麼要展開說的
總結下 內容有 方法的調用 方法的返回 實參 形參 封裝 實際變量 局部變量。差不多到這裏基本知識就講完了,明天我們就可以開始做一個攻擊艦艇的遊戲。明天見