-----------------------------------------------------------------
local Base = {
--定义要使用的成员变量
arrData = {}
}
function Base:new(oMataTable )
--实例化后的对象
oMataTable = oMataTable or {}
--将Base的元表 也就是函数说明、操作符、table访问都复制到新对象上
--简单的解释就是 oMataTable 表有了Base的所有函数和table操作
setmetatable(oMataTable, self)
--这句很重要 因为self会根据table自身变化
self.__index = self
return oMataTable
end
function Base:SetData(key, value)
self.arrData[key] = value
print(key, self.arrData[key])
end
function Base:GetData(key)
return self.arrData[key]
end
------------------------------------------------------------------------------------
---
local Child = {
--定义要使用的成员变量
_iData = 11
}
--这句作用就是将Child定义的成员保留下来_iData 然后再继承
Child = Base:new(Child)
--覆盖基类函数
function Child:SetData(key, value)
self.arrData[key] = value + self._iData
print(key, self.arrData[key])
end
--------------------------------------------------
function Mgr:TestClass()
local base = Base:new()
base:SetData(1, 10)
--输出 1,10
local childTest = Child:new()
childTest:SetData(1, 10)
--输出 1,21 父类方法被覆盖了
print(childTest :GetData(1))
--输出 20 子类继承了父类方法
end