lua 调用父类同名方法
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
lua 调用父类同名方法
在Lua 中,如果一个子类(派生类)继承自一个父类,而且这两个类有同名的方法,你可以通过使用冒号运算符来调用父类的同名方法。
冒号运算符会传递一个额外的参数,即调用者对象(self)。
下面是一个简单的示例:
```lua
--定义父类
ParentClass = {}
function ParentClass:new()
local obj = setmetatable({}, self)
self.__index = self
return obj
end
function ParentClass:sayHello()
print("Hello from ParentClass")
end
--定义子类
ChildClass = {}
--创建子类对象,并将父类作为元表
function ChildClass:new()
local obj = ParentClass:new()
setmetatable(obj, self)
self.__index = self
return obj
end
--重写父类的方法
function ChildClass:sayHello()
print("Hello from ChildClass")
end
--调用父类的同名方法
function ChildClass:callParentSayHello()
ParentClass.sayHello(self)
end
--创建子类对象
local childObj = ChildClass:new()
--调用子类的方法
childObj:sayHello()
--调用父类的同名方法
childObj:callParentSayHello()
```
在上述示例中,`ChildClass` 继承自`ParentClass`。
子类中重写了父类的`sayHello` 方法,并通过`callParentSayHello` 方法调用了父类的同名方法。
请注意,在调用父类方法时,需要显式地传递`self` 参数,以确保正确地定位到父类的方法。
这是因为在Lua 中,冒号运算符隐式地将调用者对象传递给方法。