Lua面向对象 --- 多继承

Lua面向对象 --- 多继承,第1张

概述工程目录结构: ParentMother.lua: 1 ParentMother = {}2 3 function ParentMother:MortherName()4 print("Morther name : HanMeimei")5 end6 7 return ParentMother ParentFather.lua: 1 ParentFather = {}2 3

工程目录结构:

ParentMother.lua:

1 ParentMother = {}2 3 function ParentMother:Morthername()4     @H_502_31@print("Morther name : HanMeimei")5 end6 7 return ParentMother

ParentFather.lua:

1 ParentFather = {}2 3 function ParentFather:Fathername()4     @H_502_31@print("Father name : liLei")    5 end6 7 return ParentFather

Daughter.lua:

 1 @H_502_31@require "ParentMother" 2 @H_502_31@require "ParentFather" 3  4 Daughter = {} 5  6 --不是 Daughter 中一个方法 7 local function Search(key,BaseList) 8     for i=1,#BaseList do 9         local val = BaseList[i][key]10         if val then11             return val12         end    13     end14     return nil15 end16 17 --不是 Daughter 中一个方法18 local function CreateClass()19     local parents = {ParentMother,ParentFather}20     @H_502_31@setMetatable(Daughter,21         {22             __index = function(t,k)23                 return Search(k,parents)24             end25         })26 end27 28 29 30 function Daughter:new()31     local self = {}32     CreateClass()33     @H_502_31@setMetatable(self,{__index = Daughter})34     Daughter.__index = Daughter35     return self36 end37 38 function Daughter:Daugthername()39     @H_502_31@print("Daugther name : linda")40 end41 42 return Daughter43 44 --[[45 Lua多继承的实现原理:46 也是利用的元表和元表的__index字段,不同于对象实例化和单一继承不同的是__index字段赋值的是一个函数而不是一个基类的表。47 利用传入__index字段的函数来查找类中找不到的字段(函数中遍历该类继承的多个基类)48 --]]

Main.lua:

 1 @H_502_31@require "Daughter" 2  3 local child = Daughter:new() 4 child:Daugthername() 5 child:Morthername() 6 child:Fathername() 7  8 --[[ 9 运行结果:10 Daugther name : linda11 Morther name : HanMeimei12 Father name : liLei13 --]]

码云上的相关工程:https://gitee.com/luguoshuai/LearnLua

总结

以上是内存溢出为你收集整理的Lua面向对象 --- 多继承全部内容,希望文章能够帮你解决Lua面向对象 --- 多继承所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1234817.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-06
下一篇 2022-06-06

发表评论

登录后才能评论

评论列表(0条)

保存