引用和修改自 wiki、阿夢的程式設計天地
以下我都改用遊戲角度來描述,我個人認為比貓 狗 機器人之類比喻的有趣哈哈
如果沒玩遊戲可能會看不太懂拍謝
物件導向程式(Object-oriented programming,縮寫:OOP)
程式的運作就是由不同物件來運行的
每個物件都由類別來產生
類別概念:
職業類別:初新者 物件:一個玩家阿明一進遊戲是初新者
所有初心者類別
屬性有: 力量、敏捷、智慧
招是有:烙跑、打怪
物件導向的三大特性:
- 封裝:(Encapsulation):把寫好的東西包起來,把程式碼包起來,玩家只能按遊戲介面。
- 繼承(Inheritance):玩家轉職不同職業,如超強弓箭手會繼承弓箭手的技能。
- 多型(Polymorphism):同樣普通攻擊,不同的職業參考的數據不同,弓箭手原本吃重敏捷,轉職成超強弓箭手也會吃到智慧加成( 覆寫普通攻擊 )。索隆一刀流、二刀流、三刀流同樣的武器,會有不同的輸出( 多載 )
封裝:
顧名思義就是把東西封裝起來,你只能用他給你的遊戲介面來進行攻擊、施放技能,實際上你不知道他裡面的程式碼怎麼運作。
class 初新者
{
private void 揮動武器() {}; //在遊戲介面沒有的選項
public void 攻擊(){揮動武器()}; //攻擊就是拿武器K敵人
}
class 玩家
{
初心者 馬小九 = new 初心者(); //一個新玩家
初心者.攻擊(); //無法呼喚揮動動武器的方法,遊戲介面只有左鍵攻擊
}
繼承:
轉職成戰士,還是會有原本的技能跟屬性
class 初新者
{
屬性: 力量,敏捷,智慧,血量;
方法: 攻擊();
}
//繼承初新者所有屬性
class 戰士:初新者 //轉職成功可以放技能會消耗MP
{
屬性: 魔力;
方法: 雙重攻擊();
}
多型:
不同的值傳入會執行不同的結果。有多載跟覆寫
class 初心者
{
屬性: 力量,敏捷,智慧,血量;
方法: 攻擊(){力量*0.5};
}
class 戰士:初新者
{
攻擊(){力量*1.5}; // 覆寫 攻擊計算方式不一樣了
雙重攻擊(一把武器); //多載 多把武器傷害更高
{傷害*1+力量*1}
雙重攻擊(兩把武器);
{傷害*2+力量*1+敏捷*1}
}
@copyright MRcodingRoom
觀看更多文章請點MRcoding筆記
觀看更多文章請點MRcoding筆記