Lua实现类继承

 更新时间:2015年03月09日 16:53:37   投稿:hebedich  
这里给大家演示的是一个使用lua实现类继承的示例,实现类继承其实有很多种写法,这里是本人常用的方法,推荐给大家。

mulInherit.lua

复制代码 代码如下:

--[[
author:looyer@sina.com
date:2014/7/18
purpose:lua的继承演示
--]]
--- base class "Object"
local Object = {_t = "Object"}
function Object:new(id)
    local o =
    {
        _id = id
    }
    setmetatable(o, self)
    self.__index = self
    return o
end
function Object:type()
    return self._t
end
function Object:id()
    return self._id
end
--- class "Widget" driver from "Object"
local Widget = {_t = "Widget"}
setmetatable(Widget, Object)
function Widget:new(id)
    local o =
    {
        _id = id,
    }
    setmetatable(o, self)
    self.__index = self
    -- function (tb, key)
    --  return self[key]
    -- end
    return o
end
-- function Widget:id()
--  return self._id
-- end
--- class "Drawor" driver from "Object"
local Drawor = {_t = "Drawor"}
setmetatable(Drawor, Object)
function Drawor:new(id, name)
    local o =
    {
        _id = id,
        _name = name,
    }
    setmetatable(o, self)
    self.__index = self
    return o
end
function Drawor:name()
    return self._name
end
--- class "DrawPlane" driver from "Widget" and "Drawor"
local DrawPlane = {_t = "DrawPlane", _father = {Widget, Drawor}}
function DrawPlane:new(id)
    local o =
    {
        _id = id,
    }
    setmetatable(o, self)
    self.__index =
    function (tb, key)
        if self[key] then return self[key] end
        for _, v in pairs(self._father) do
            if v._t == key then return v end
            if v[key] then return v[key] end
        end
    end
    return o
end
local varA = Object:new()
local varB = Widget:new(10)
local varC = Drawor:new(30, "dwr")
local varD = DrawPlane:new(51)
print("varA type:", varA:type())
print("varB type:", varB:type())
print("varB._id: ", varB._id, varB:id())
print("varC name: ", varC:name())
print("varD type: ", varD:type())
print("varD id: ", varD:id())
print("varD father Widget--", varD.Widget:type())

以上就是本文所要分享的代码了,希望大家能够喜欢。

相关文章

  • Lua的table库函数insert、remove、concat、sort详细介绍

    Lua的table库函数insert、remove、concat、sort详细介绍

    这篇文章主要介绍了Lua的table库函数insert、remove、concat、sort详细介绍,本文分别给出了这几个函数的使用实例,需要的朋友可以参考下
    2015-04-04
  • Lua和C语言的交互详解

    Lua和C语言的交互详解

    这篇文章主要介绍了Lua和C语言的交互详解,Lua和C语言通过栈完成交互,本文结合代码实例详细讲解了交互的方法,需要的朋友可以参考下
    2014-09-09
  • Lua教程(十二):面向对象编程

    Lua教程(十二):面向对象编程

    这篇文章主要介绍了Lua教程(十二):面向对象编程,本文讲解了类、继承、私密性等面向对象编程知识,需要的朋友可以参考下
    2015-04-04
  • Lua获取utf8字符串长度和字符串截取并用...代替

    Lua获取utf8字符串长度和字符串截取并用...代替

    这篇文章主要介绍了Lua获取utf8字符串长度和字符串截取并用...代替,本文直接给出两个函数的实现代码,需要的朋友可以参考下
    2015-04-04
  • Lua中的协同程序探究

    Lua中的协同程序探究

    这篇文章主要介绍了Lua中的协同程序探究,本文讲解了什么是协同程序、创建协同程序、更像样的协同程序、让协同程序挂起、resume操作的返回值,需要的朋友可以参考下
    2014-09-09
  • lua 基础教程

    lua 基础教程

    Lua 的语法比较简单,学习起来也比较省力,但功能却并不弱。所以,我只简单的归纳一下Lua的一些语法规则,使用起来方便好查就可以了。估计看完了,就懂得怎么写Lua程序了。
    2015-09-09
  • 让你的python代码更加pythonic(简练、明确、优雅)

    让你的python代码更加pythonic(简练、明确、优雅)

    这篇文章主要介绍了让你的python代码更加pythonic(简练、明确、优雅),本文讲解的是一种让代码更加清晰、简练、明确、优雅的书写方法,需要的朋友可以参考下
    2014-10-10
  • Lua中的基本数据类型详细介绍

    Lua中的基本数据类型详细介绍

    这篇文章主要介绍了Lua中的基本数据类型详细介绍,本文详细的讲解了Lua中的8种基本数据类型,需要的朋友可以参考下
    2014-09-09
  • Lua编程示例(一):select、debug、可变参数、table操作、error

    Lua编程示例(一):select、debug、可变参数、table操作、error

    这篇文章主要介绍了Lua编程示例(一):select、debug、可变参数、table操作、error,本文直接给出代码实例,需要的朋友可以参考下
    2015-07-07
  • Lua编程中的一些基本语法整理

    Lua编程中的一些基本语法整理

    这篇文章主要介绍了Lua编程中的一些基本语法整理的相关资料,是Lua入门中最基础的知识,需要的朋友可以参考下
    2015-05-05

最新评论