Lua五:面向对象基础
面向对象有三个核心特征:类,继承,私有性。基于这三方面,介绍Lua的面向对象的编程和实现原理(没介绍的会在之后的随笔介绍)。从很多意义上讲,Lua语言中的一张表就是一个对象。使用参数self是所有面向对象语言的核心点。
先看下一段代码,这是一个简单表达账户储存和提取的代码:
Account = {balance = 0}
function Account.withdraw ( v)
Account.balance = Account.balance – v
end
Account.withdraw ( 100.00 )
a,Account = Account, nil
a.withdraw ( 100.00) --> ERROR!
这里代码会出现错误,这是因为目前withdraw函数只针对特定对象即Account工作。对象a不能使用withdraw函数。因此,要想实现函数对于对象的通用,我们的方法需要一个额外的参数来表示函数的接受者,这个参数通常被称为self或this:
function Account.withdraw ( self , v)
self.balance = self.balance – v
end
a1 = Account ; Account = nil
a1.withdraw(a1,100.00 )
a2 = {balance=0, withdraw = Account.withdraw}
a2.withdraw ( a2,260.00 )
大多数面向对象语言都隐藏了self这个机制,从而使得程序员不必显式地声明这个参数。Lua语言同样可以使用冒号操作符(colon operator)隐藏该参数。使用冒号操作符,我们可以将上例重写为a2 : withdraw (260.00)。冒号的作用就是:定义函数时,给函数的添加隐藏的第一个参数self; 调用函数时,默认把当前调用者作为第一个参数传递进去。参见下段代码。
Account = { balance=0}
function Account : withdraw ( v)
self.balance = self.balance – v
end
function Account : deposit (v)
self.balance = self.balance + v
end
Account.deposit(Account,200.00 )
Account : withdraw( 100.00)
- LUA基础: TABLE, ARRAY, NAMESPACE, LUA的面向对象
- 笔记: Lua基础: Table, Array, Namespace, Lua的面向对象
- 《Java编程思想》学习笔记1——面向对象和JVM基础
- Lua面向对象
- 回顾面向对象基础
- 面向对象基础
- 回顾面向对象基础
- 学Lua你必须要清楚的要点之 元表与面向对象
- 14.lua学习笔记:面向对象
- 设计模式_可复用面向对象软件的基础pdf
- Java基础05:面向对象;类与对象;匿名对象;成员变量;局部变量;封装;构造函数
- Java基础知识练习---面向对象
- 设计模式学习笔记二:面向对象基础二
- PHP基础----面向对象相关特性----11成员方法和类方法
- 面向对象基础
- 黑马程序员学习log第七篇基础知识:JAVA的面向对象之GUI总结
- Java面向对象基础杂记2
- 面向对象基础
- 4.面向对象基础
- C#面向对象设计模式 学习之旅(一) - 面向对象编程基础