print("*****************************面相对象封装*******************************")
object={}
object.id=1
function object:text()
--面相对象的类其实就是基于table来实现的
print(self.id)
end
--冒号会自动将调用这个函数的对象作为第一个参数传入
function object:new()
--self表示的我们默认的传入第一个参数
--对象就是变量 返回一个新的变量
--返回出去的内容本质上就是一个表对象
local obj={}
self.__index=self--当找自己的变量找不到的时候就会去找元表中的__index对象
setmetatable(obj,self)
return obj
end
local myobj=object:new()
print(myobj)
print(myobj.id)
print("******")
myobj:text()
--对空表中 申明一个新的属性 id
myobj.id=2
myobj:text()
print("***********自己写着玩的*************")
man = {}
man.id = 10
man.age = 24
man.love = 114514
function man:new()--man表示父类表的名字
local obj2 = {}
self.__index=self
setmetatable(obj2,self) --self表示man这张表,这里表示将man这张表作为obj2的元表(父类)
return obj2
end
local sailuo = man:new() --赛罗继承父类man
print(sailuo.id) -- 输出10
print(sailuo.age) -- 输出24
print(sailuo.love) -- 输出24
print("***********gtp版本的继承***************")
object = {}
object.name=8848
function object:new()
-- 创建新对象
local obj = {}
self.__index = self
setmetatable(obj, self)
return obj
end
function object:hello()
print("Hello, I am an object!")
end
local obj1 = object:new()
obj1:hello() -- 输出:Hello, I am an object!
print(obj1.name)
输出