在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
1.模拟枚举
2.lua实现类,继承,多态 父类: --类的声明,这里声明了类名还有属性,并且给出了属性的初始值 Class = {x=0,y=0} --设置元表的索引,想模拟类的话,这步操作很关键 Class.__index = Class --构造方法,构造方法的名字是随便起的,习惯性命名为new() function Class:new(x,y) local self = {} --初始化self,如果没有这句,那么类所建立的对象如果有一个改变,其他对象都会改变 setmetatable(self, Class) --将self的元表设定为Class self.x = x --属性值初始化 self.y = y return self --返回自身 end --这里定义类的其他方法 function Class:test() print(self.x,self.y) end function Class:plus() self.x = self.x + 1 self.y = self.y + 1 end --设置元表和__index元方法是必须的,需要借助lua的查找机制来实现类的继承和多态
require 'Class' --声明了新的属性Z
通过设置SubClass的元表为它的父类Class,可以重定义或者说覆盖/重写父类的方法 测试: require 'Class' require 'SubClass' local a = Class:new(1,2) -- 首先实例化父类的对象,并调用父类中的方法 a:plus() a:test() a = SubClass:new(1,2,3) -- 然后实例化子类对象 a:plus() -- 子类对象可以访问到父类中的成员和方法 a:go() -- 子类对象调用子类中的新增方法 a:test() -- 子类对象调用重写的方法 输出: 2 3 12 3 3
|
请发表评论