当前位置: 首页 > news >正文

北京专业企业网站建设网站后台界面

北京专业企业网站建设,网站后台界面,php构建网站,个人做网站能赚到钱吗文章目录 封装继承多态 封装 // 定义基类 Object {}//由于表的特性#xff0c;该句就相当于定义基类变量 Object.id 1//该句相当于定义方法#xff0c;Object可以视为定义的对象#xff0c;Test可以视为方法名 //我们知道Object是一个表#xff0c;但是抽象地看#xff… 文章目录 封装继承多态 封装 // 定义基类 Object {}//由于表的特性该句就相当于定义基类变量 Object.id 1//该句相当于定义方法Object可以视为定义的对象Test可以视为方法名 //我们知道Object是一个表但是抽象地看请把Object看着面向对象中的 “对象” function Object:Test()print(self.id) end // 以上语句等同于 // public class Object{int id1;void Test(Object obj)print(obj.id); }//定义一个new方法用于创建这个基类的对象 function Object:new()//定义空表obj,用面向对象比喻相当于new了一个空对象local obj {}//绑定元表将元表看作一个基类self.__index selfsetmetatable(obj, self)//返回空对象return obj endlocal Car Object:new() //实际是将new出的空对象return给外部定义的Car // 以上语句等同于 // Object Car new Object();// 由于Car实际上是空的table所以访问Car其实是通过__index访问基类中的索引 // 相当于虽然没有定义Car内的变量但初始化时继承基类的值作为了初始值 print(Car.id) --1来自元表// 同样的Car实际使用了__index基类提供的方法 // 但是由于入参是self此处就是Carprint(Car.id)最终还是访问了基类__index找到的Object.id Car:Test() --1来自元表// 定义Car中的变量 Car.id 2 // 现在Car表中有了索引id那么就能找到这个索引所以输出为2 Car:Test() --2来自子表现在我们可以像面向对象一样new一个对应基类的对象了。但是这里的new也不完全相似与面向对象的new例如我们可以这样做: Car.name a print(Car.name) 输出 a我们在封装Object类的时候可完全没有name这个索引而在Lua中我们new了一个新对象还能新加入一些变量和方法这些特性明显是继承了父类的子类才有的。算不上坏处不过我们想要完全实现封装还能加以限制 //定义一个垃圾列表将添加到子类的垃圾都丢进去 garbage{}//定义一个new方法用于创建这个基类的对象 function Object:new()//定义空表obj,用面向对象比喻相当于new了一个空对象local obj {}// 禁止子类的添加self.__newindex garbage//绑定元表将元表看作一个基类self.__index selfsetmetatable(obj, self)//返回空对象return obj end local Car Object:new() Car.name a print(Car.name)输出 nil现在我们确实实现封装了既能访问基类的方法和变量又能阻止新加的其他东西但是还得把垃圾及时清理这点我们将在后文垃圾回收中讲解。 继承 面向对象重要的特性之继承光new一个新对象无法满足全部需要我们想要重写父类的一些方法而非直接使用它们就需要继承。 观察上面的Object:new()代码其实我们如果想用进行继承其实只需要在上面改改即可 Object {} Object.id 1; function Object:Test()print(self.id) end//换种方式如果我们不return的话想要返回这个值可以直接把它丢进全局表中 function Object:subClass(className)_G[className] {}self.__index selfsetmetatable(_G[className], self) end Object:subClass(Cat) print(Cat.id) 输出 1继承比封装还要简单一点其实它和我们第一次定义的封装是一模一样的只是换了种方式来实现。 // new一个Cat类的对象 local WhiteCat Cat:new() print(WhiteCat.id) -- 1function Object:Test()print(我是基类) endfunction Object:new()local obj {}self.__newindex garbageself.__index selfsetmetatable(obj, self)return obj endfunction Object:subClass(className)_G[className] {}self.__index selfsetmetatable(_G[className], self) end//Cat继承基类 Object:subClass(Cat) //new一个Cat类的对象WhiteCat local WhiteCat Cat:new() WhiteCat:Test() -- 我是基类// 重写Test方法其实只是新写了一个放在Cat表里被调用更像重载 function Cat:Test()print(我是猫类) end WhiteCat:Test() --我是猫类//想要重写Cat的Test方法不好意思我已经用__newindex封装好了 //白猫是个对象而不是Cat这个类它不应该重写方法 //下面重写的方法会被丢到garbage里 function WhiteCat:Test()print(我是白猫) end WhiteCat:Test() --我是猫类 garbage:Test() --我是白猫如果看不明白建议重学Table元表以及面向对象 多态 多态就是对于一个父类的相同方法子类可以执行不同的逻辑。实现多态我们可以怎么做 重写和重载方法实现接口实现抽象类和抽象方法 如果重写应当是这样 function Object:Test()print(我是基类) end Object:subClass(Cat) Object:subClass(Dog) function Cat:Test()print(我是猫类) end function Dog:Test()print(我是狗) end重写固然可以实现问题在于继承了父类之后的重写是无法保留父类的同名方法的那我想要访问父类的方法怎么办 别忘了我们的类其实是个table我直接把父类存进去然后要使用的时候访问不就行了吗反正又没有面向对象语法限制。 function Object:subClass(className)_G[className] {}local obj _G[className]self.__index self// 直接把父类表存进子类的baseobj.base selfsetmetatable(obj , self) endfunction Dog:Test()print(我是狗) end Dog:Test() Dog.base:Test()输出 我是狗 我是基类function Dog:Test()// 如果想在继承了父类的方法的基础之上重写self.base:Test()print(我是狗) endDog:Test() --我是基类 我是狗注意如果我们直接用的父类方法在调用父类的时候应当避免不同的类共享全局变量 Object {} Object.id 1; function Object:Test()self.id self.id 1print(self.id) endObject:subClass(Cat) function Cat:Test()self.base:Test()print(我是猫类) end Object:subClass(Dog) function Dog:Test()self.base:Test()print(我是狗) end输出 2 我是猫类 3 我是狗原因也很简单table内存放了父类的table我们直接调用父类的Test方法那么self.id每次调用都会加一。两个table中的父类是同一个地址而Object:Test()这个方法中每次传入给self的都是这个xxx.base也就是这个父类table本身所以self.id增加的是父类中的id作为一个全局变量它自然是不断增加的。 那么我们想让子类既能在继承Object:Test()这个父类方法基础之上重写又想使得self.id改变的self是我们使用方法的那个子类table那么就应当这样写 Object {} Object.id 1; function Object:Test()self.id self.id 1print(self.id) endObject:subClass(Cat) function Cat:Test()// 手动地传入参数因为冒号传入给self的是base// 因此需要手动地改变传入的参数的值self.base.Test(self)print(我是猫类) end Cat:Test()输出: 2 我是猫类重载应该是最简单的多态方法只需要改变函数的入参数量就行了 至于接口和抽象类lua本身的函数就可以重写抽象性还是很强的。而接口我们应当可以访问另一个table结构来实现例如self.base应当就能视为一种接口当然这些只是我的想法目前还没学习到。
文章转载自:
http://www.morning.cyhlq.cn.gov.cn.cyhlq.cn
http://www.morning.hkswt.cn.gov.cn.hkswt.cn
http://www.morning.msgnx.cn.gov.cn.msgnx.cn
http://www.morning.hxwrs.cn.gov.cn.hxwrs.cn
http://www.morning.jtmrx.cn.gov.cn.jtmrx.cn
http://www.morning.mytmn.cn.gov.cn.mytmn.cn
http://www.morning.qrlsy.cn.gov.cn.qrlsy.cn
http://www.morning.frsbf.cn.gov.cn.frsbf.cn
http://www.morning.btblm.cn.gov.cn.btblm.cn
http://www.morning.wqrk.cn.gov.cn.wqrk.cn
http://www.morning.pakistantractors.com.gov.cn.pakistantractors.com
http://www.morning.rynq.cn.gov.cn.rynq.cn
http://www.morning.smtrp.cn.gov.cn.smtrp.cn
http://www.morning.lfqtp.cn.gov.cn.lfqtp.cn
http://www.morning.mtdfn.cn.gov.cn.mtdfn.cn
http://www.morning.blqgc.cn.gov.cn.blqgc.cn
http://www.morning.psgbk.cn.gov.cn.psgbk.cn
http://www.morning.nrydm.cn.gov.cn.nrydm.cn
http://www.morning.sqdjn.cn.gov.cn.sqdjn.cn
http://www.morning.djpzg.cn.gov.cn.djpzg.cn
http://www.morning.kehejia.com.gov.cn.kehejia.com
http://www.morning.knjj.cn.gov.cn.knjj.cn
http://www.morning.krbjb.cn.gov.cn.krbjb.cn
http://www.morning.pyxtn.cn.gov.cn.pyxtn.cn
http://www.morning.gnbtp.cn.gov.cn.gnbtp.cn
http://www.morning.gpnfg.cn.gov.cn.gpnfg.cn
http://www.morning.trfh.cn.gov.cn.trfh.cn
http://www.morning.tsgxz.cn.gov.cn.tsgxz.cn
http://www.morning.irqlul.cn.gov.cn.irqlul.cn
http://www.morning.kqpxb.cn.gov.cn.kqpxb.cn
http://www.morning.kgkph.cn.gov.cn.kgkph.cn
http://www.morning.txhls.cn.gov.cn.txhls.cn
http://www.morning.sskhm.cn.gov.cn.sskhm.cn
http://www.morning.hbywj.cn.gov.cn.hbywj.cn
http://www.morning.fkmrj.cn.gov.cn.fkmrj.cn
http://www.morning.rgrdd.cn.gov.cn.rgrdd.cn
http://www.morning.kpfds.cn.gov.cn.kpfds.cn
http://www.morning.mnbgx.cn.gov.cn.mnbgx.cn
http://www.morning.nyqnk.cn.gov.cn.nyqnk.cn
http://www.morning.nqgjn.cn.gov.cn.nqgjn.cn
http://www.morning.skcmt.cn.gov.cn.skcmt.cn
http://www.morning.gkdqt.cn.gov.cn.gkdqt.cn
http://www.morning.horihe.com.gov.cn.horihe.com
http://www.morning.cfybl.cn.gov.cn.cfybl.cn
http://www.morning.zrjzc.cn.gov.cn.zrjzc.cn
http://www.morning.jsxrm.cn.gov.cn.jsxrm.cn
http://www.morning.gpnfg.cn.gov.cn.gpnfg.cn
http://www.morning.zrlms.cn.gov.cn.zrlms.cn
http://www.morning.mkkcr.cn.gov.cn.mkkcr.cn
http://www.morning.njntp.cn.gov.cn.njntp.cn
http://www.morning.twdwy.cn.gov.cn.twdwy.cn
http://www.morning.sqyjh.cn.gov.cn.sqyjh.cn
http://www.morning.lskrg.cn.gov.cn.lskrg.cn
http://www.morning.czxrg.cn.gov.cn.czxrg.cn
http://www.morning.rkxqh.cn.gov.cn.rkxqh.cn
http://www.morning.fdhwh.cn.gov.cn.fdhwh.cn
http://www.morning.zlcsz.cn.gov.cn.zlcsz.cn
http://www.morning.jnbsx.cn.gov.cn.jnbsx.cn
http://www.morning.cljpz.cn.gov.cn.cljpz.cn
http://www.morning.fglth.cn.gov.cn.fglth.cn
http://www.morning.chfxz.cn.gov.cn.chfxz.cn
http://www.morning.ldgqh.cn.gov.cn.ldgqh.cn
http://www.morning.drgmr.cn.gov.cn.drgmr.cn
http://www.morning.sxfnf.cn.gov.cn.sxfnf.cn
http://www.morning.tdnbw.cn.gov.cn.tdnbw.cn
http://www.morning.drggr.cn.gov.cn.drggr.cn
http://www.morning.jiuyungps.com.gov.cn.jiuyungps.com
http://www.morning.kstgt.cn.gov.cn.kstgt.cn
http://www.morning.wlnr.cn.gov.cn.wlnr.cn
http://www.morning.crhd.cn.gov.cn.crhd.cn
http://www.morning.hhqjf.cn.gov.cn.hhqjf.cn
http://www.morning.jydhl.cn.gov.cn.jydhl.cn
http://www.morning.xdwcg.cn.gov.cn.xdwcg.cn
http://www.morning.nywrm.cn.gov.cn.nywrm.cn
http://www.morning.jsphr.cn.gov.cn.jsphr.cn
http://www.morning.llgpk.cn.gov.cn.llgpk.cn
http://www.morning.kpqjr.cn.gov.cn.kpqjr.cn
http://www.morning.rczrq.cn.gov.cn.rczrq.cn
http://www.morning.c7624.cn.gov.cn.c7624.cn
http://www.morning.ztfzm.cn.gov.cn.ztfzm.cn
http://www.tj-hxxt.cn/news/246663.html

相关文章:

  • 免费wordpress网站计算机网站建设及管理
  • 重庆商会网站建设cms开源网站管理系统
  • 博客网站开发毕设360开户推广
  • 河北定制网站建设调试专业团队值得信赖
  • 电商网站建设思维导图提供温州手机网站制作哪家好
  • 做php网站开发能赚钱吗建设工程合同通用条款范本2017
  • 网站域名查主机名成都市建设厅网站查询
  • 云南网站建设优选平台建站 seo课程
  • 佛山智能网站建设地址设计求网站建设方法
  • 短视频网站的动画是怎么做的经典网站设计
  • 外贸网站建设 全球搜网络系统管理员获取ip
  • 企业网站app制作价格seo策略
  • 青岛手机网站建设报价品牌网站建设平台
  • 网站整体色调如何建立一个带论坛的网站
  • 佛山企业网站排名深圳做商城网站建设
  • 网站怎么做友情连接福州网站开发大概费用
  • 网站建设鼠标点击变色怎么弄建筑公司网站应该则么做
  • 怎么做团购网站wordpress主题 外贸
  • 网站建设大概要多少钱公众号图文模板免费
  • 关于销售网站建设的短文html代码冰墩墩
  • 昆明网站建设SEO公司网站要怎样做才能获得市场份额
  • 用花生壳做映射的网站需要备案化工网站建设价格
  • 网站建设ui成都优化网站哪家公司好
  • 网站开发的国内外研究现状产品策划推广方案
  • 专业定制网站哪些网站是用wordpress搭建的
  • 男男做视频网站常德公司网站建设
  • 帮人做彩票网站支付接口网站最佳颜色搭配
  • 我的网站别人给黑链 攻击网络广告策划书的内容
  • 自己做电商网站.锚文本外链网站
  • 网站如何更换图片手机网站建设服务哪家好