lua 多态实例
时间: 2023-07-19 19:14:39 浏览: 63
下面是一个使用元表实现多态的 Lua 实例:
```lua
-- 定义一个基类 Animal
Animal = {}
function Animal:new(name)
local obj = {}
obj.name = name
setmetatable(obj, self)
self.__index = self
return obj
end
function Animal:speak()
print("Animal speaks.")
end
-- 定义一个子类 Dog
Dog = Animal:new()
function Dog:speak()
print("Dog barks.")
end
-- 定义一个子类 Cat
Cat = Animal:new()
function Cat:speak()
print("Cat meows.")
end
-- 测试多态
local animal1 = Animal:new("Animal")
local animal2 = Dog:new("Dog")
local animal3 = Cat:new("Cat")
animal1:speak() -- 输出 "Animal speaks."
animal2:speak() -- 输出 "Dog barks."
animal3:speak() -- 输出 "Cat meows."
```
在这个例子中,Animal 是一个基类,Dog 和 Cat 是 Animal 的子类。在 Animal 中定义了一个 speak 函数,该函数输出 "Animal speaks.",在 Dog 和 Cat 中重载了该函数,实现了多态。在测试中,分别创建了一个 Animal 对象、一个 Dog 对象和一个 Cat 对象,并调用它们的 speak 函数,输出了不同的结果。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)