-
封装
Object={} Object.id=1 function Object:new() local obj = {} self.__index=self setmetatable(obj,self) return obj end local myObj = Object:new() myObj.id=3 print(myObj) print(Object) print(myObj.id)
-
继承
obj.base=self 保存基类方法
function Object:SubClass(className) _G[className]={} local obj=_G[className] self.__index=self obj.base=self setmetatable(obj,self) end Object:SubClass("Person") local p1 = Person:new() print(p1.id)
-
多态
Object:SubClass("GameObject") GameObject.posX=0 GameObject.posY=0 function GameObject:Move() self.posX=self.posX+1 self.posY=self.posY+1 print(self.posX) print(self.posY) end GameObject:SubClass("Player") function Player:Move() self.base.Move(self) end local p1 = Player:new() print(p1) p1:Move() local p2 = Player:new() print(p2) p2:Move()
lua 面向对象(继承、封装、多态)
最新推荐文章于 2022-07-25 22:18:30 发布