c++和java语言机制中本身带有面向对象的内容,而lua设计的思想是元编程,没有面向对象的实现。
但是利用lua的元表(matetable)机制,可以实现面向对象。要讲清楚怎样实现lua面向对象,需要讲清楚以下内容。
1.lua元表 2.类和对象 3.封装 4.继承
1.lua元表
lua里的所有数据结构都是表。metatable可以改变table的行为。例如加法行为,table本身没有加法行为。
可以通过修改元表中的__add域,来提供表的加法行为。__add叫做元方法(metamethod)。
一个表默认是不带元表的。getmetatable可以获取元表。
t = {} print(getmetatable(t)) --nil
setmetatable可以设置元表。
t = {} setmetatable(t, t) --设置自己是自己的元表 print(t == getmetatable(t)) --true
任何一个表可以其他表的元表。一个表也可以是自己的元表。
原文:http://www.cnblogs.com/yao2yaoblog/p/6433553.html