物件導向(二)

2021-10-14 03:57:43 字數 2706 閱讀 3609

前言:前面講了一大堆理論,拿幾個例子試試

一共兩個小例子:

試題:設定乙個類, 命名為 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 我們...