lua语言实现面向对象编程

来源:互联网 发布:破壁机 原汁机 知乎 编辑:程序博客网 时间:2024/05/22 03:29

lua是一个非常轻巧的脚本语言。这里通过几个步骤,说明lua如何实现类的功能。

1、通过clone函数复制表

function clone( tab_ )local tab = {}for k,v in pairs(tab) dotab[k] = vendreturn tabend

2、定义类的成员函数new,用于实例化对象

Myclass = {}Myclass.new = function (  )local self = clone(Myclass)return selfend


3、继承

通过复制表的方式,实现继承

function copy(dist,tab) --把tab表里的数据复制给distfor k,v in pairs(tab) dodist[k] = vendendbase = {} --基类base.new = function (  )local self = clone(Myclass)return selfendinheritance = {} --继承自base类inheritance = function()local self = base.new()copy(self,inheritance)return selfend

4、函数重写

函数重写非常简单,直接赋值给子类一个新的函数就行

inheritance.fun = function ( ... )-- bodyend

5、私有成员

通过函数闭包的方法,可以实现类的成员私有化

function People( name )local self = {}local function init() --闭包实现私有成员函数self.name = nameendself.sayHi = function()print("Hi "..self.name)endinit() --相当于构造函数return selfendfunction Man(name) --继承自People的类local self = {}local function init()self = People(name)endself.sayHello = function()print("Hello "..self.name)endinit()return selfendlocal m = Man("QJ")m:sayHello() --"Hello QJ"m:sayHi() --"Hi QJ" 继承基类的方法

6、总结

lua可以通过复制表和闭包的方法来实现类的特性,使用复制表效率更高,使用闭包给符合使用习惯。


0 0