为什么要做这个总结
Lua是一门寄宿型语言,相对来说没有那么严格,也没有面向对象的一些特征(封装,继承,多态),所以用Lua中的Table来映射一下面向对象的三大特征。
直接上一个例子
是有关图形面积周长计算的一个示例:
local Shape = {
height = 0,
weight = 0,
radius = 0,
shape_perimeter = 0,
shape_area = 0,
cal_p = function(self)
return 0
end,
cal_a = function(self)
return 0
end
}
local Circle = {
new = function(self,radius)
return setmetatable({radius = radius},{__index = self})
end,
cal_p = function(self)
return self.radius*math.pi*2
end,
cal_a = function(self)
return math.pi*self.radius*self.radius
end
}
setmetatable(Circle,{__index = Shape})
local circleIns = Circle:new(6)
print("圆的面积是:",circleIns:cal_a())
print("圆的周长是:",circleIns:cal_p())
当然,还可以后续扩展一些其他的图片,比如:三角形、矩形、梯形…<