关于Lua实现多继承的思考
原理
已知:table1.__Index = table2 或者 function
setmetatable(obj, table1) //这句话表达的意思是把table1设置为obj的元表
在查找obj中的某个元素时,如果没有找到就会查看是否有元表,如果找到元表就查看元表中是否有__Index,如果有就在__Index中去查找该元素【如果__index是一个函数,那么就会执行这个函数并且获取返回值】。
准备
- 子类中用一个table来存想要继承的父类 ;
- 一个从table中找到这个某个元素的函数【要求传入参数funcName】;
- 将子类的元表设置为这个查找函数;
情景
假设有A, B, C三个类,S要继承这个三个类
代码展示
a = {
}
b = {
}
d = {
}
function a:func1()
print(<