前言:前面講了一大堆理論,拿幾個例子試試
一共兩個小例子:
試題:設定乙個類, 命名為 mylist
類中包含屬性:object[
] element
方法有如下幾個:
增加方法 add : 可以向陣列屬性中依次儲存 object,陣列內容
存滿時,需實現動態擴容(詳解在下面)。
刪除方法 remove :可以根據資料或下標,從陣列屬性中刪除
object 資料,刪除後,陣列後續元素需前移。
查詢方法 get :方法傳入下標,返回陣列中指定下標的資料。
當前儲存資料量 size : 獲取當前儲存的有效資料長度
動態擴容詳解:無需真正增加原陣列的容量,只用將原內容複製到新
的大陣列,然後讓原陣列名稱重新等於大陣列即可。由於原陣列資料在堆中,
失去引用會被 gc 自動**。
public
class
mylist
//增加
public
void
add(object o,
int index)
else
//element指向大陣列的位址,element原有的陣列被gc**
element = newelement;
//擴容之後給擴容後的element賦值
element[index]
= o;
"擴容陣列為:"+arrays.tostring(element));
//以上擴容是成功了,但是size計數需要在原來的基礎上增加一
size++;}
"當前陣列為:"+arrays.tostring(element));
}public
intgetsize()
//根據資料刪除
//邏輯:判斷是否有相等的值,如果有則移位覆蓋即可,
// 如果用break在內迴圈裡,結果只移動一位 錯誤 內部迴圈必須完整迴圈結束
//如果沒有相等值,也不能直接else輸出
//如果有對應的else會輸出所有外層迴圈相比較的次數內容
//解決方法:使用boolean值判讀是否有查詢的值
public
void
remove
(object o)}}
//設定最後一位重複的為null
element[size-1]
= null;
if(i***ists)
else
}//根據下標刪除
/*可以直接將後面一位往前移一位將
*前面的資料覆蓋,最後再將最後乙個沒有覆蓋的資料重新定義成null
* */
public
void
remove
(int index)
else
element[size-1]
= null;
} system.out.
println
("當前陣列為:"
+arrays.
tostring
(element));
}//查詢方法
public object get
(int index)
public
static
void
main
(string[
] args)
今天的任務是通過控制台方式實現乙個人機對戰的猜拳遊戲,使用者通過輸
入(1.剪刀 2.石頭 3.布),機器隨機生成(1.剪刀 2.石頭 3.布),勝者積分,
n 局以後通過積分的多少判定勝負。
public
class
moragame
game.
print()
;}//記錄人出的手勢
int p;
//記錄機械人出的手勢
int r;
int pnum=
0,rnum=0;
//機械人出的手勢
void
robot()
else
if(i ==2)
else
if(i ==3)
r = i;
}//人出的手勢
void
person
(int i)
else
if(i ==2)
else
if(i ==3)
else
p = i;
}//比較人和機械人猜拳的結果
void
result()
else
if(p==
1&& r==2)
else
if(p==
1&& r==3)
else
if(p==
2&& r==1)
else
if(p==
2&& r==3)
else
if(p==
3&& r==1)
else
if(p==
3&& r==2)
else
}//輸出結果
void
print()
else
if(pnum < rnum)
else
}}
物件導向(二)
物件導向的特徵之三 多型 多型機制 是物件導向程式設計的乙個重要特徵 多型的特點 是採用同名的方式,根據呼叫方法時傳送的引數的多少以及傳送引數型別的不同,呼叫不同的方法,這樣對於類的編制而言,可以採用同樣的方法獲得不同的行為特徵 多型性可以分為 編譯時多型 和執行時多型 編譯時多型 表現為方法名相同...
物件導向 二
多型 polymorphic 概述 事物存在的多種形態.1,事物存在的多種形態.2,要有方法重寫 3,要有父類引用指向子類物件.3,要有父類引用指向子類物件.重寫的注意事項 b 子類重寫父類方法時,訪問許可權不能更低 重寫的例子 public class base void test byte b ...
物件導向(二)
在類中屬性前加上雙下滑線就是私有化的屬性了,不能在類外直接通過類名呼叫 class dog role dog d dog print dog.role 報錯 我們可以用 dict 看看dog中有那些屬性看看 role變成了什麼 class dog role dog print dog.dict 我們...