封装
Object = {}
Object.id=12
function Object:Test()
print(self.id)
end
function Object:new()
local obj={}
self.__index=self
setmetatable(obj,self)
return obj
end
local myObj = Object:new();
print(myObj)
myObj.id=3
print(myObj.id)
myObj:Test()
print(Object.id)
print(getmetatable(myObj).id)
继承
function Object:subClass(className)
_G[className] ={}
local obj=_G[className]
self.__index=self;
obj.base=self;
setmetatable(obj,self)
end
Object:subClass("Person")
print(Object.id)
local p1=Person:new()
p1.id=3
print(p1.id)
Object:subClass("Monster")
local m1=Monster:new()
m1.id=6
print(m1.id)
多态
function Object:subClass(className)
_G[className] ={}
local obj=_G[className]
self.__index=self;
obj.base=self;
setmetatable(obj,self)
end
Object:subClass("Person")
print(Object.id)
local p1=Person:new()
p1.id=3
print(p1.id)
Object:subClass("Monster")
local m1=Monster:new()
m1.id=6
print(m1.id)
print("***********面向对象——多态************")
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,self.posY)
end
GameObject:subClass("Player")
function Player:Move()
self.base.Move(self)
end
local p1 = Player:new();
p1:Move();
local p2=Player:new();
p2:Move()
Player:Move()
Player:Move()
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 葡萄城 AI 搜索升级:DeepSeek 加持,客户体验更智能
· 什么是nginx的强缓存和协商缓存
· 一文读懂知识蒸馏