http://blog.csdn.net/ssihc0/article/details/7742421

代码收藏了,以后用的到
--多重继承
local function search(k,plist)
for i=,#plist do
local v=plist[i][k] -- 取一个基类
if v then return v end
end
end function createClass(...)
local c={};
local parents={...}; setmetatable(c,{__index=function(t,k) return search(k,parents) end } ); c.__index=c; function c:new(o)
o=o or {};
setmetatable(o,c);
return o;
end return c;
end Named={};
function Named:getname()
return self.name;
end function Named:setname(n)
self.name=n;
end Account={balance=}; function Account:new(o)
o= o or {}
setmetatable(o,self);
self.__index=self;
return o;
end function Account.deposit(self,v)
self.balance=self.balance+v;
end function Account:withdraw(v)
if (v) > self.balance then error "insufficient funds"; end
self.balance=self.balance-v;
end NamedAccount=createClass(Account,Named); user=NamedAccount:new{name="user admin"};
print (user:getname(),user.balance);

http://my.oschina.net/u/156466/blog/401576

local class1 = {}
function class1:new()
local obj = {}
setmetatable(obj, {__index= class1})
return obj
end function class1:print1()
print("class1:print()")
end local class2 = {}
function class2:new()
local obj = {}
setmetatable(obj, {__index= class2})
return obj
end function class2:print2()
print("class2:print()")
end function super(k, list)
for i,v in ipairs(list) do
local ret = v[k]
if ret then
return ret
end
end
end local class3 = {}
function class3:new()
local obj = {}
local base = {class1, class2}
--t为调用的对象,k为方法名
setmetatable(class3, {__index= function(t,k) return super(k, base) end})
setmetatable(obj, {__index = class3})
return obj
end

Lua多重继承的更多相关文章

  1. Lua 安全调用 metatable 的简单应用

    事情的经过 我们的项目中存在好几个战斗界面,不过界面中的内容略有不同.跟同事出去吃饭的时候,他问我.我们现在的战斗界面.有很多是重复的,但是也有偶尔几个地方不太一样.我在战斗过程中驱动这些界面的时候. ...

  2. lua下的简单OO实现

    笔者学习了当前(文末各文献)lua下的各种OO实现方法.略作笔记. 也提出了一些自己的想法.主要还是记录供将来着之参考.   1.概述   首先[2]PIL第二版中给出了OO的基于table的实现方式 ...

  3. lua拾遗之lua中冒号(:)与点号(.)的区别和来由

    参考资料 1.https://my.oschina.net/lonewolf/blog/173065 其结论为: 1.定义的时候:Class:test()与 Class.test(self)是等价的, ...

  4. Lua学习笔记一

    学习了有一周多了.之前一直不想献丑,但还是记录下这个过程. 第1章  开发软件搭建 1. ubuntu 下lua安装 sudo apt-get install lua5.1 2.win下的环境搭建. ...

  5. lua 面向对象

    对象的特点是: 对象拥有自己的数据,两个对象即使数据完全相同,他们也是相互独立的: 对象之间可以共享对象的行为,也就是他们的方法是一致的: lua中的table就非常适合作为一个对象,可以在table ...

  6. Lua面向对象编程

    Lua中的table就是一种对象,看以下一段简单的代码: , b = } , b = } local tb3 = tb1 if tb1 == tb2 then print("tb1 == t ...

  7. 关于Lua程序设计{读书笔记}

    1.lua中的标识符可以是由任意字母.数字和下划线构成的字符串,但不能以数字开头.2.lua将通常类似"_VALUE"的标识符作为保留标识符3.lua的保留字 and break ...

  8. LUA和C++绑定的一些天然的麻烦

    最近在看Luatinker的源代码,打算自己改(仿写)写搞一个简单的封装C++和LUA的结合的库,结果发现其实麻烦和困惑比想象的多. 比如这些点: 1)有时候使用模板的时候,引用会退化. classt ...

  9. lua metatable和metamethod元表和元方法

    Lua中提供的元表是用于帮助Lua数据变量完成某些非预定义功能的个性化行为,如两个table的相加.假设a和b都是table,通过元表可以定义如何计算表达式a+b.当Lua试图将两个table相加时, ...

随机推荐

  1. 程序猿都是project师吗?

    全部的程序猿都是project师吗?当然不是.project师是必修课.程序猿则是选修.project师为自己的事业工作,而程序猿做他们喜欢做的事情.project是实实在在的,编程是抽象的. 为了吸 ...

  2. ArcEngine颜色可视化

    AE中利用.NET中的ColorDialog对话框,将color对象转化为ArcEngine中的IRgbColor (1)在实现颜色选择之前,需定义这两种颜色之间的转换函数 //Color转换为Rgb ...

  3. Highcharts属性

    <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding= ...

  4. 总结前端JQ常用的一些操作手法(慢慢完善)

    1.实例化Js一个object对象,把它当做类来用,事例是操作url的参数 function GetRequestCondition() { var url = window.location.hre ...

  5. TCP粘包/拆包问题的解决

    TCP粘包拆包问题 一个完整的包可能被TCP拆分成多个包,或多个小包封装成一个大的数据包发送. 解决策略 消息定长,如果不够,空位补空格 在包尾增加回车换行符进行分割,例如FTP协议 将消息分为消息头 ...

  6. poj1458 求最长公共子序列 经典DP

    Common Subsequence Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 45763   Accepted: 18 ...

  7. HibernateTemplate用法

    private HibernateTemplate hibernateTemplate; 使用HbernateTemplate HibernateTemplate提供持久层访问模板化,使用Hibern ...

  8. 【solr基础教程之一】Solr相关知识点串讲

           Solr是Apache Lucene的一个子项目.Lucene为全文搜索功能提供了完备的API,但它只作为一个API库存在,而不能直接用于搜索.因此,Solr基于Lucene构建了一个完 ...

  9. java poi 合并单元格后边框问题

    在项目中用poi合并单元格,但发现边框会有不显示的问题. 在网上搜集了答案,来记录一下. 解决方法: 将每个没用到的单元格都设空值. 例如: HSSFCell cell = row.createCel ...

  10. entity framework 6 通用数据类

    原文  http://blog.csdn.net/laokaizzz/article/details/25730813 public class BaseDAL { string strConn = ...