面向对象
Lua 提供了部分面向对象的语法糖,这仅仅能在开发中提供一个功能不完备的独立 Class 的使用,有 self
可以来引用 LUA 表的某些属性和方法,但是更多的面向对象特性,比如继承,比如类的构造等,LUA 支持的并不是非常好,日常的业务开发中,我们确实有些通用的逻辑可能需要复用,或者数据需要共享,需要有父子关系等等。所以我们在 Vanilla 中,简单封装了部分面向对象的特性,这里我们简单介绍其使用方法。
一个简单的 Vanilla 类
下面我们看一个例子:
类定义
代码释意:
Class("LibA")
声明一个 Vanilla 类,类名为LibA
LibA:__construct( data )
提供了一个类 LibA 的构造器,并对相应的属性进行初始化
类使用
执行结果 sex-->man
代码释意:(类使用的时候需要注意,类的使用分为类文件的加载 Load( 如这里的 LoadLibrary )
和实例化 LibA()
) 两个步骤
local LibA = LoadLibrary('aa')
载入类名为LibA
的类local liba_instance = LibA({name='idevz',sex='man'})
传入表{name='idevz',sex='man'}
对类进行相关的实例化liba_instance.sex
是对实例属性的引用
注:载入和实例化也可以一步达成 local liba_instance = LoadLibrary('aa')({name='idevz',sex='man'})
类继承
下面我么定义一个类 LibB,并使之集成于 LibA
类定义
代码释意:
Class("LibB", LoadLibrary('LibA'))
声明一个 Vanilla 类,类名为LibB
继承自类LibA
self.parent:__construct(data)
构造器中调用父类的构造器
类使用
执行结果 xxx
代码释意:
libb_instance:idevzDo
调用父类的idevzDo
方法
Last updated