创建基类
下面拆解下这个函数,下面这段代码定义在animal.lua文件中。其中实现了一个new函数,new函数默认没有对象会创建一个新表,并且将self作为这个新表的元方法。
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| animal = {} function animal:Talk(content) print("animal:Talk->" .. content) end
function animal:new(obj) obj = obj == nil and {} or obj self.__index = self setmetatable(obj, self) return obj end
return animal
|
创建子类Cat继承基类animal
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| local anim = require("animal") cat = anim:new()
function cat:CatTalk(content) print("cat:CatTalk->" .. content) end
function cat:new(obj) obj = obj == nil and {} or obj
self.__index = self setmetatable(obj, self) return obj end
return cat
|
测试脚本
子类继承了基类的 Talk 函数,并且调用输出了自己的CatTalk函数。
1 2 3 4 5 6 7 8 9
| local cat = require("cat") local c = cat:new() c:Talk("hello world") c:CatTalk("hello world")
PS D:\lua> lua .\test1.lua animal:Talk->hello world cat:CatTalk->hello world
|
本文标题:lua中的面向对象之继承
文章作者:Keyle
发布时间:2024-04-03
最后更新:2024-08-20
原始链接:https://vrast.cn/posts/4397/
版权声明:©Keyle's Blog. 本站采用署名-非商业性使用-相同方式共享 4.0 国际进行许可