首页 > 其他 > 详细

Lua面向对象编程

时间:2014-04-21 20:20:28      阅读:621      评论:0      收藏:0      [点我收藏+]

Lua面向对象编程和c++面向对象编程,都是面向对象方法学,都支持类,继承,多态。

什么是类?在c++中,类其实是一个模板,实例化一个类后产生这个类的一个对象,然后才能像:对象.方法(),对象.属性,或者,类指针->方法()。可是在Lua中,类和这个类的对象之间的概念很模糊,lua语言构造的类,可以不经过实例化过程,直接当对象使用。这因为这样,lua中的对象是一种模拟。我们抽象理解为需要实例化过程,也许我讲的不是很清楚,我们看下代码:

 

--账户基类:Account Account = {balance = 100.00} --有一个blance属性 ---模拟Account实例化和继承思想所需的方法new() function Account:new(o) o = o or { } setmetatable(o,self) self.__index = self return o end --Account类的方法deposit(存款) function Account:deposit( v ) self.balance = self.balance + v end --Account类的方法deposit(取款) function Account:withdraw( v ) if v > self.balance then error "no enph money!" end self.balance = self.balance - v end ---------------------------------------------------------------------------------------- --派生子类 spacialAccount = Account:new{limit = 1000.00,rate = 0.100} --子类的新方法 function spacialAccount:setrate( v ) self.rate = v; end --实例化子类,得到对象s s = spacialAccount:new() --对象调用方法 s:setrate(0.300) print(s.balance) print(s.limit) print(s.rate)

子类继承父类,和实例化类产生新对象都用new()方法模拟实现,实现形式一样,但概念是不一样的,关系很微妙,很奇葩。

Lua面向对象编程,布布扣,bubuko.com

Lua面向对象编程

原文:http://icandoit2014.blog.51cto.com/8825523/1398865

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!