美文网首页
Lua多重继承

Lua多重继承

作者: 86a262e62b0b | 来源:发表于2020-03-10 11:27 被阅读0次

继承
多重继承

一.

--遍历每一个table,查找有没有key
local function search (key, tables)

    for i=1, table.getn(tables)  do
        local v = tables[i][key]

        if v then return v end
     end
end

--创建一个继承了多个类的类
function createClass (...)
    local c = {}        --新类

    setmetatable(c, {__index = function (t, key)
        return search(key, arg)  --遍历每一个table,查找有没有key
    end})

    c.__index = c

    --给新类添加构造函数
    function c:new (o)
        o = o or {}
        setmetatable(o, c)
        return o
    end

    --返回新类
    return c
end

--Account 类
Account = {balance = 0}

--Named类
Named = {a = '123'}
function Named:getname ()
    return self.name
end

function Named:setname (n)
    self.name = n
end

--继承Account和Named的类
NamedAccount = createClass(Account, Named)

--实例化对象
account = NamedAccount:new{name = "Paul"}

print(account:getname())     --> Paul
  • 一种提高性能的方法:
setmetatable(c, {__index = function (t, k)
    local v = search(k, arg)
    t[k] = v       -- save for next access
    return v
end})

相关文章

  • Lua多重继承

    继承多重继承 一. 一种提高性能的方法:

  • Lua 元表和元方法

    table 作为 Lua 中唯一的数据结构,我们可以利用 table 实现面向对象编程中的类、继承、多重继承等等。...

  • 慕课网-C++远征之继承篇(下)-学习笔记

    C++远征之继承篇(下) 多继承与多重继承 多重继承: 多继承: 如果不写,那么系统默认为private继承 多重...

  • Java中关于多重继承的问题

    多重继承的含义 一.用接口实现多重继承 二.用内部类实现多重继承

  • Lua 继承

    Aitin原创稿件,转载请注明出处!使用Lua 也很久了,这里写一点使用心得 Lua 继承的使用 主要用到的是 _...

  • Lua继承

    Lua中的元表查询操作 class方法详解 下面看一下基本使用,一个MyBase的基类,然后一个MyChildA的...

  • 2018-08-02

    lua实现继承,重载和多态(上) *讲到lua的继承等面向对象的实现,首先得讲一下lua中的几个元方法和元表. s...

  • 4.0 C++远征:多继承和多重继承

    5-1多继承和多重继承 1.多重继承 线性继承两次及其以上为多重继承。 2.多继承 一个派生类同时有多个基类。

  • 面向对象

    类的定义方法 子类的定义 多重继承 python允许多重继承。

  • 接口,抽象类,内部类

    1.多重继承 Java 并不支持多重继承,多重继承是指一个类可以继承多个类,也就是一个类可以有多个直接父类。 抽象...

网友评论

      本文标题:Lua多重继承

      本文链接:https://www.haomeiwen.com/subject/kqiidhtx.html