print("=================面向对象=================")
Student = {
age = 1,
sex = true,
Up = function ()
print(Student.age)
print("Growing up")
end,
Learn = function()
print("好好学习")
end
}
Student.name = "guan"
function Student:Speak2()
print(self.name .. " Speak")
end
Student:Speak2()
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
print("=================继承=================")
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()
p1.id = 100
print(p1:Test())
Object:subClass("Monster")
local m1 = Monster:new()
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)
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()
p2: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
GameObject:subClass("Player")
function Player:Move()
self.base.Move(self)
end
local p1 = Player:new()
print(p1.posX)
p1:Move()
print(p1.posX)
local p2 = Player:new()
print(p2.posX)
p2:Move()
print(p2.posX)