-- 工具函数
--克隆一个传进来的表到自己创建的一个新的表
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 继承 原理
最新推荐文章于 2022-11-23 16:25:37 发布