0
点赞
收藏
分享

微信扫一扫

第十五届蓝桥杯大赛软件赛省赛 C/C++ 大学 B 组

九点韶留学 23小时前 阅读 1
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)

输出

 

举报

相关推荐

0 条评论