• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

lua面向对象

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

直接贴代码,参考的也是别人的,只不过其中几点,增加一点自己的理解
http://blog.sina.com.cn/s/blog_89d90b7c0102x9f1.html

local BaseClass ={};
print(“BaseClass是”..tostring(BaseClass));
– 定义index属性,指向本身
BaseClass.__index =BaseClass;
– 定义构造函数
function BaseClass:new(a)
– 定义私有表,属性存储在子表obj中
local obj = {[“a”] = a};
– 设置obj表的原表为self,即BaseClass
– 此时查找obj的属性就会自动去查找BaseClass,同时查找Baseclass又会自己找自己
setmetatable(obj, self);
return obj;
end

– 定义成员方法
function BaseClass:PrintInfo()
print(“表是”..tostring(self)..”打印信息”..self.a);
end

local classObj =BaseClass:new(10);
print(“新对象是”..tostring(classObj));
– classObj没有printInfo方法,而是通过元表,得到的BaseClass的PrintInfo方法,打印中
–传递过去的self其实是classObj自身
classObj:PrintInfo();

– 子类,继承
local childClass ={};
–设置子类元表,子类没有就去父类寻找
setmetatable(childClass,BaseClass);
–设置index属性,指向自身
childClass.__index= childClass;
– 子类构造函数
functionchildClass:new(a,b)
– 和BaseClass一样的方式
– 不同之处在于子表要“继承”父类
local obj = BaseClass:new(a);
– 添加自身特有属性
obj.b = b;
setmetatable(obj,self);
return obj;
end

–子类的方法
functionchildClass:PrintChildInfo()
print(“子类的方法”..self.b);
end

– 多态
– 重写父类方法
functionchildClass:PrintInfo()
–这里的self是子类中的子表
print(“多态”..self.a);
end

local childObj =childClass:new(50, 5);
childObj:PrintChildInfo();
–调用childObj没有的方法,查找元表BaseClass
childObj:PrintInfo();
打印的结果是:
子类的方法5
多态50


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
页面静态化(openresty,lua)发布时间:2022-07-22
下一篇:
quick-cocos2dx lua中读取 加密 csv表发布时间:2022-07-22
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap