原文地址:http://blog.csdn.net/qqmcy/article/details/37725177
类实现:
MyClass = class("MyClass") --这句话是重定义元表的索引,必需要有 MyClass.__index = MyClass function MyClass:test(x,y) local temp = {} setmetatable(temp, MyClass) -- 必需要有 self.x=x self.y=y return self end function MyClass:printf123() print(self.x,self.y) end
调用
obj = MyClass:test(17,28) obj:printf123()
类继承:
这里继续使用上面的代码
TestClass = {c=0} //和类定义一样。表索引设定为自身 TestClass.__index = TestClass --设置类型是MyClass setmetatable(TestClass, MyClass) function TestClass:test1(a, b,c) local temp1 = {} self=MyClass:test(a, b)--将对象设定为父类,这个和C++使用父类的方法同样都是用父类名MyClass调用 setmetatable(self, TestClass)--将对象自身元表设定为TestClass类 self.c = c return self end function TestClass:myPrintf() print(self.x,self.y,self.c) end