LUA 面向对象

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()

原文地址:https://www.cnblogs.com/sysnap/p/6925226.html