Lua实现面向对象

Posted 小紫苏xw

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Lua实现面向对象相关的知识,希望对你有一定的参考价值。

Lua实现面向对象

Lua本身没有面向对象,但是可以通过function和表来模拟面向对象的过程;

表table

Lua中没有类的概念,可以用table模拟类的用法;

table存放的键值对,可当做class中的字段和方法,都可以存进表中;

首先创建公共方法:复制表中所有的键值对;

function clone(tab)
	local ins = {}
	for key,var in pairs(tab)do
		ins[key] = var
	end
	return ins
end

function copy(dist,tab)
	for k,v in pairs(tab)do
		dist[k] = v
	end
end

实例化对象

可以模拟类的构造函数,写一个new方法;

People是一个类,p为People的对象;

People = {name = ""}

function People.new(name)
	local self = clone(People)
	self.name = name
	return self
end

People.walk = function(self)
	print(self.name.."is walking slowly!")
end

--创建对象
local p = People.new("little Perilla")
p:walk()

继承

创建一个新的表,重写new构造方法,同时拷贝父类中所有的键值对;

--继承
Man = {}
Man.new = function(name)
	local self = People.new(name)
	copy(self,Man)
	return self
end

重写方法

直接暴力重写,同名即可;

--重写方法
Man.walk = function(self)
	print(self.name.." is walking!")
end

--创建对象
local m = Man.new("little Perilla")
m:walk()

最终打印结果如下:

以上是关于Lua实现面向对象的主要内容,如果未能解决你的问题,请参考以下文章

lua学习:lua实现面向对象

Lua实现面向对象

cocos2d-Lua02Lua面向对象

lua 面向对象编程类机制实现

Lua面向对象设计(转)

lua 简单实现 面向对象