lua中如何继承基类
时间: 2024-02-26 12:58:01 浏览: 58
Lua实现类继承
在 Lua 中,可以使用基于原型的继承方式来实现继承基类。具体步骤如下:
1. 定义一个基类,可以是一个普通的 Lua 表,也可以是一个包含方法的 Lua 类。
2. 定义一个继承函数,该函数接受一个子类表和父类表作为参数,实现继承的过程。
3. 在子类表中添加一个 __index 元方法,让 Lua 在查找子类表中不存在的元素时,自动去父类表中查找。
4. 在子类表中添加一个 new 函数,用于创建子类的实例。
例如,假设我们有一个基类 Animal:
```lua
local Animal = {
name = "unknown",
age = 0
}
function Animal:new(name, age)
o = {}
setmetatable(o, self)
self.__index = self
self.name = name
self.age = age
return o
end
function Animal:say()
print("I am an animal.")
end
```
现在我们想要继承 Animal 类,可以定义一个子类 Dog:
```lua
local Dog = {}
function Dog:new(name, age, breed)
o = Animal:new(name, age)
setmetatable(o, self)
self.__index = self
self.breed = breed
return o
end
function Dog:bark()
print("Woof!")
end
```
在子类 Dog 中,我们调用了 Animal 类的 new 函数来初始化子类实例,然后设置了子类的元表为自身,添加了一个 __index 元方法,让 Lua 在查找子类表中不存在的元素时,自动去父类表中查找。最后,我们在子类中定义了一个新的方法 bark。
现在,我们就可以创建 Dog 类实例,并调用父类和子类的方法了:
```lua
local myDog = Dog:new("Buddy", 2, "Golden Retriever")
myDog:say() -- output: I am an animal.
myDog:bark() -- output: Woof!
```
阅读全文