模拟继承方式
代码:
--继承 -- 基类:Person local Person = {} --基类的表 -- 方法 function Person:test() print("Person:test()",self) end function Person:new(instance) if not instance then instance = {} end local meta_Person = { __index = self, } setmetatable(instance,meta_Person) return instance end --end -- 子类:man local Man = Person:new() -- 方法 function Man:test_man() print("man:test_man",self) end --end --实例化子类 local p = Man:new() print("p ==== ",p) p:test_man() p:test() --Person:setName()
结果:
1: 子类的表是父类的一个实例
2: 子类的表作为一个原型再new了一个表;
类的实实例-->元表-->子类的表-->元表-->父类的表;
3: 现在子类的实例找,找不到到元表找,元表找不到,到元表的元表找;
4: 子类重载父类的函数;
首先在实例表里查找---》子类查找--》父类查找等等
5: 子类调用父类的函数;