-- 工具函數
--克隆一個傳進來的表到自己創建的一個新的表
function clone(origin)
local dest = {}
for key, value in pairs(origin) do
dest[key] = value
end
return dest;
end
--傳進來兩個表 A和B 將B表中的元素克隆到A表中
function copy(dest, tab)
for key, val in pairs(tab) do
dest[key] = val
end
end
--定義父類
People = {}
People.sayHi = function(self) --父類中的元素 sayHI (self =People.sayHi方法)
print("父SayHI "..self._name)
end
People.eat = function()--父類中的元素 eat
print("父eat")
end
People.aaa=function()
print ("aaaaa")
end
People.new = function(name) --父類的構造函數 (self =People.new方法)
self = clone(People)
self._name = name --用構造參數初始化_name字段
return self
end
-- 定義子類
Chinese = {}
Chinese.new = function(name, hukou)
self = People.new(name); --new 父類對象實現繼承
self._hukou = hukou --用構造參數初始化_hukou字段
copy(self, Chinese) -- 子類上面的 特有的屬性也附着到self上面
return self
end
Chinese.eat = function() -- 覆蓋父類方法
print("子類 eat")
end
Chinese.aaaaa()
Chinese.buyHouse = function()
print("子類獨有")
end
-------------------------------------------------------------
lisi = Chinese.new("1", "hebei")
lisi.new ()
--print(lisi._name.." is from "..lisi._hukou) -- 父類的成員和自己的成員
--
--lisi:sayHi() -- 繼承父類方法
--lisi:eat() -- 覆蓋父類方法
--lisi:buyHouse() -- 子類獨有的方法
print(lisi ._name)
Lua 繼承 原理
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.