您的位置:首页 > 编程语言 > Lua

Lua面向对象编程

2014-04-20 09:26 204 查看
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()方法模拟实现,实现形式一样,但概念是不一样的,关系很微妙,很奇葩。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: