1 继承,用元表的__index来实现
2 类实例,方法和具体数据绑定。可以设置一张表来共享所有方法
3 objtable:func(...) 调用表的函数时,会把objtable赋值给self,这样函数体里面可以直接使用self访问表的数据
4 例子
classA = {} -- 元表
classA.__index = classA -- __index字段指向自己,这样就会查找元表里面的字段
function classA:hello()
print("classA:hello", self.x, self.y)
end
function classA:new(x, y) --创建实例,就是返回一个绑定了具体数据的普通table
local tb = {}
tb.x = x
tb.y = y
setmetatable(tb, classA) -- 设置元表,这样可以共享元表里面的函数
return tb
end
obj = classA:new(100, 200)
obj:hello() --冒号调用,这样self参数就是obj
obj2 = classA:new(300, 400)
obj2:hello()