一,概述
Lua的类基于表结构。表中存在一个与值无关的标识符self,反应方法的调用者。
二、基础
表中含有self的方法
--类方法的两种声明
c1 = {
self1 = function(self)
print(self.value)
end
}
function c1:self2()
print(self.value)
end
c1.value = 11
--类方法的两种调用
c1:self1()
c1:self2()
c1.self1(c1)
c1.self2(c1)
三、面向对象的类
Account = {
balance = 0,
new = function(self)
--面向对象的基本写法
o = {}
self.__index = self
setmetatable(o, self)
return o
end,
withdraw = function(self, v)
self.balance = self.balance - v
end,
depesid = function(self, v)
self.balance = self.balance + v
end
}
三、封装
Class = {
new = function(self)
obj = {}
local privateValue = 0;
obj.add = function(self, v)
privateValue = privateValue + v;
end
obj.del = function(self, v)
privateValue = privateValue - v;
end
obj.get = function()
return privateValue
end
self.__index = self;
setmetatable(obj, self);
return obj
end
}
obj = Class:new()
obj:add(100)
obj:add(30)
print(obj.get())
四、继承
setmatetable,可以从元表中查找本表没有的数据
五、多态
?
留言