lua-面向对象

    技术2025-09-03  21

    --面向对象 --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()
    Processed: 0.022, SQL: 10