Gosu塔防遊戲

林品儒

2016/12/23

繼承

程式碼重用

有些時候一些方法在很多類別實作很類似

重複的程式碼增加了撰寫的時間

同時在更改之後也需要同步更改

繼承

繼承可以將父類別的屬性繼承給子類別

子類別可以使用父類別的方法

子類別也可以使用父類別的類別變數

方法存取控制

在Ruby中可以限制實體方法的可見度

public到處都可以呼叫

private只能在接收者為self且不指定接收者時呼叫

protected只能在該類或子類呼叫

方法繼承

實體方法以及類別方法都會被繼承下來

子類別的方法會優先於父類別的方法

同時方法的存取限制一樣繼承下來

呼叫父類別同名函式

當定義了父類別已有的同名方法

可以使用super呼叫父類別的該方法

但是要注意呼叫不要省略小括號

類別的實體變數

因為各個類別有自己的實體變數

繼承不會把變數給子類別

但是類別變數會繼承下去

實際範例

class Parent
  @class_inst_var = 100
  @@class_var = 200
  def self.output
    p @class_inst_var
    p @class_var
  end
end
class Child < Parent
end

遊戲內部類別繼承

Unit > Tower
     > Actor > Rat
             > Cat > Kitten
                   > SpearCat
                   > UFOCat

繼承效果

因為重用程式碼所以省下很多行數

就算有點不一樣還是可以繼續用

這次的繼承是很好用的技巧

一定要學起來歐