--面向对象
--lua中类可以通过table【属性】+function【方法】+metetable【继承,不推荐用,只模拟最基本的对象大部分时间够用了】模拟实现
--基类
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("Area== ",self.area)
end
--创建对象
Shape1 = Shape:new(nil,5)
--属性访问,使用点号
print("Area=",Shape1.area)
--函数调用,使用冒号
Shape1:printArea()
print()
--继承:指一个对象直接使用另一对象的属性和方法。可用于扩展基础类的属性和方法。
--继承实例1-正方形
Square = Shape:new()
--派生类方法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("Square Area =",self.area)
end
Square1 = Square:new(nil,6)
Square1:printArea()
print()
--继承实例2-矩形
Rectangle = Shape:new()
--派生方法 new
function Rectangle:new(o,width,height)
o = o or Shape:new(o)
setmetatable(o,self)
self.__index = self
self.area = width * height
return o
end
--派生类方法printArea()重写
function Rectangle:printArea()
print("Rectangle Area =",self.area)
end
Rectangle1 = Rectangle:new(nil,4,7)
Rectangle1:printArea()
lua-面向对象
最新推荐文章于 2024-08-13 18:05:09 发布