◆クラス
---------------------------------------
--Characterクラスの定義
---------------------------------------
Character = {} --Characterクラス
--newメソッド
function Character:new(_character)
obj = {}
--メンバ変数の定義と初期化
if _character then
--コピーコンストラクタ的な処理
obj.name = _character.name
obj.age = _character.age
else
--デフォルトコンストラクタ適な処理
obj.name = ""
obj.age = 0
end
--Characterのメソッドをobjに設定
--継承みたいな感じ
self.__index = self
setmetatable(obj, self)
return obj
end
--setメソッド
function Character:set(_name, _age)
self.name = _name
self.age = _age
end
--__tostringメタメソッドのオーバーライド
function Character:__tostring()
return "name:"..self.name.."\n".."age:"..self.age
end
--cloneメソッド
function Character:clone()
return Character:new(self)
end
----------------------------------------
--クラスの使用
----------------------------------------
c = Character:new() --オブジェクトの生成
c:set("suzuki", 12) --データの設定
d = Character:new(c) --コピーコンストラクタの使用
print("--c--")
print(c)
print("--d--")
print(d)
print("\n")
c:set("suzuki_2", 24)
d:set("yamada", 55)
print("==c==")
print(c)
print("==d==")
print(d)
print("\n")
e = d:clone()
d:set("takeda", 77)
print("##d##")
print(d)
print("##e##")
print(e)
0 件のコメント:
コメントを投稿