print("*******面向对象********")
print("*******封装********")
Object={
}
Object.id = 1
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.id)
myObj:Test()
myObj.id=2
myObj:Test()
print("*******继承********")
function Object:subClass( className )
_G[className]={
}
local obj=_G[className]
self.__index=self
obj.base=self
setmetatable(obj,self)
end
Object:subClass("Person")
print(Person.id)
local p1=Person:new()
print(p1.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)
print(self.posY)
end
GameObject:subClass("Player")
function Player:Move( ... )
self.base.Move(self)
end
local p1=Player:new()
p1:Move()
local p2=Player:new()
print("************")
p2:Move()
p1:Move()
总结
Object={
}
function Object:new( )
local obj={
}
self.__index=self
setmetatable(obj,self)
return obj
end
function Object:subClass( className)
_G[className]={
}
local obj=_G[className]
obj.base=self
self.__index=self
setmetatable(obj,self)
end
Object:subClass("GameObject")
GameObject.posX=0
GameObject.posY=0
function GameObject:Move( )
self.posX=self.posX+1
self.posY=self.posY+1
end
local obj=GameObject:new()
print(obj.posX)
obj:Move()
print(obj.posX)
local obj2=GameObject:new()
print(obj2.posX)
obj2:Move()
print(obj2.posX)
GameObject:subClass("Player")
function Player:Move( )
self.base.Move(self)
end
print("**************")
local p1=Player:new()
print(p1.posX)
p1:Move()
print(p1.posX)
local p2=Player:new()
print(p2.posX)
p1:Move()
print(p2.posX)