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. File类的使用

    java.io.File 类用于表示文件(目录) File类只用于表示文件(目录)的信息(名称.大小等),不能用于文件内容的访问 file类常用的api package com.zhb.java; i ...

  2. 同一DataTable下创建多个结构数据相同的DataView的小问题

    昨天在根据经理的要求修改公司后台的时候,遇到了一个很奇怪的问题 DataView dvFocus = ]); DataView dvLook = ]); DataView dvNewUser = ]) ...

  3. 改进的简单Tooltips显示

    使用js简单改进了Tooltips的显示效果,可进一步使用CSS对改进的Tooltips进行美化. 前台布局代码: <asp:Panel ID="Panel1" runat= ...

  4. hbase权威指南学习笔记--过滤器

    1.使用hbase是shell客户端进行过滤查询 scan 'testtable',{COLUMNS=>'colfam1:col-0',FILTER=>RowFilter.new(Comp ...

  5. Eclipse配置不同JDK版本遇到的一些问题与总结

    配置多个JDk版本有时候是工作需求,也更方便自己平时的学习过程,有时候你工作上需求的开发环境是JDK比较老的版本,而为了学习JDK新版本的特性时,此时配置多个JDK版本是必须的,下面是配置多版本JDK ...

  6. poj3581Sequence(后缀数组)

    转载请注明出处: http://www.cnblogs.com/fraud/          ——by fraud Sequence Time Limit: 5000MS   Memory Limi ...

  7. Js之Screen对象

    Window Screen window.screen 对象在编写时可以不使用 window 这个前缀. 属性: screen.availWidth - 可用的屏幕宽度,以像素计,减去界面特性,比如窗 ...

  8. django框架介绍

    主要内容 1.        Django框架发展 2.        Django架构,MTV模式 3.        开发流程 4.        开发实例——Poll python下各种框架 一 ...

  9. python bottle 框架开发任务管理系统 V_1.0版

    经过1-2个星期的开发,现在开发了个半成品(UI现在比较烂,因为我的前端本来就很差,将就下吧),大概功能如下:用户功能(添加.删除.修改),添加部门功能,任务管理功能(添加.删除.修改,详细).项目管 ...

  10. Effective Java单元测试JUnit - 就是爱Java

    实作了RoleImpl class,现在要开始单元测试了,或许你会觉得奇怪,才刚做好一个class而已,它并没有商业规则,只有getter/setter与clone(),那是要测试什么呢?没错,传统上 ...