lua中可以用table来描述对象的属性。lua中的类可以通过 table + function 模拟出来。
简单例子:
Retangle = {area = 0, length = 0, breath = 0}
function Retangle:new(o, length, breath)
o = o or {}
setmetable(o, self)
self.__index = self
self.length = length or 0
self.breath = breath or 0
self.area = self.length * self.breath
return o
end
function Retangle:printArea()
print("面积是:".self.area)
end
用以上例子,创建对象,访问属性,访问成员函数如下。
local ret = Retangle:new(nil,10,30)
print(ret.area)
ret:printArea()
lua的继承
-- Meta class
Shape = {area = 0}
-- 基础类方法 new
function Shape:new (o,side)
o = o or {}
setmetatable(o, self)
self.__index = self
side = side or 0
self.area = side*side;
return o
end
-- 基础类方法 printArea
function Shape:printArea ()
print("面积为 ",self.area)
end
Square = Shape:new()
-- Derived class method new
function Square:new (o,side)
o = o or Shape:new(o,side)
setmetatable(o, self)
self.__index = self
return o
end
-- 派生类方法 printArea
function Square:printArea ()
print("正方形面积 ",self.area)
end
以上例子,Sauare类重写了printArea方法。