--面向对象实现
--万物之父 所有对象的基类 object
Object={}
--实例化方法
function Object:new()local obj={}--给空对象设置元表,以及__indexself.__index=selfsetmetatable(obj,self)return obj
end
--继承
function Object:subClass(className)--根据名字生成一张表,就是一个类_G[className]={}local obj=_G[className]--给子类一个属性base,方便找其父类obj.base=self--给子类设置元表以及__indexself.__index=selfsetmetatable(obj,self)
end--测试
--生成一个GameObject类为Object子类,而且还有两个属性posx,posy,和一个成员方法
Object:subClass("GameObject")
GameObject.posX=0;
GameObject.posY=0;
function GameObject:Move()self.posX=self.posX+1self.posY=self.posY+1
end--实例化GameObject
local obj=GameObject:new()
print(obj.posX)--0
obj:Move()
print(obj.posX)--1--展现多态
--重新定义个Player类,里面也有move方法
GameObject:subClass("Player")
function Player:Move()self.base.Move(self)--注意,这里如果写成了self.base:Move(),实际上是调用GameObject的move方法,把基类表作为了第一个参数,而且,这--这个产生的p1,p2,p3这种对象是对move()的操作实际上操作的是同一个posx,posy--这样有违面向对象的原则,也即每调用一次move都要加1--用self.base.Move(self),实际传入的是player,但是player里面没有posx,posy,所以,要去找gameobject表,找到了之后,因为self.posX=self.posX+1,实际上赋值的时候是给player又添加了posx,posy这两个属性,所以,player此时已经又了自己的posx,posy了,所以后面即使多来几个p2,p3,实际都是它们自己的posx,posy,不会相互影响了。
end
local p1=Player:new()
print(p1.posX)---0
p1:Move()
print(p1.posX)---1

Lua语法详解之多态相关推荐

  1. Python的Xpath介绍和语法详解

    1.简介 XPath是一门在XML和HTML文档中查找信息的语言,可以用来在XML和HTML文档中对元素和属性进行遍历 XPath的安装 Chrome插件XPath Helper 点Chrome浏览器 ...

  2. FreeMarker基本语法详解及模板文件的组成(二)

    海浪上次给大家分享了FreeMarker基本语法详解及模板文件的组成(一)海浪今天继续分享FreeMarker基本语法详解及模板文件的组成(二) 3.2 输出变量值<?xml:namespace ...

  3. Velocity魔法堂系列二:VTL语法详解

    一.前言 Velocity作为历史悠久的模板引擎不单单可以替代JSP作为Java Web的服务端网页模板引擎,而且可以作为普通文本的模板引擎来增强服务端程序文本处理能力.而且Velocity被移植到不 ...

  4. Java8初体验(二)Stream语法详解(转)

    本文转自http://ifeve.com/stream/ Java8初体验(二)Stream语法详解 感谢同事[天锦]的投稿.投稿请联系 tengfei@ifeve.com 上篇文章Java8初体验( ...

  5. python编程语法大全-Python编程入门——基础语法详解

    今天小编给大家带来Python编程入门--基础语法详解. 关于怎么快速学python,可以加下小编的python学习群:611+530+101,不管你是小白还是大牛,小编我都欢迎,不定期分享干货 每天 ...

  6. python编程语法-Python编程入门——基础语法详解

    今天小编给大家带来Python编程入门--基础语法详解. 一.基本概念 1.内置的变量类型: Python是有变量类型的,而且会强制检查变量类型.内置的变量类型有如下几种: #浮点 float_num ...

  7. python编程if语法-Python编程入门基础语法详解经典

    原标题:Python编程入门基础语法详解经典 一.基本概念 1.内置的变量类型: Python是有变量类型的,而且会强制检查变量类型.内置的变量类型有如下几种: #浮点 float_number = ...

  8. python编程语法-Python编程入门——基础语法详解(经典)

    今天小编给大家带来Python编程入门--基础语法详解.温馨提示: 亮点在最后! 在这里还是要推荐下我自己建的Python开发学习群:301056051,群里都是学Python开发的,如果你正在学习P ...

  9. js 正则中冒号代表什么_javascript中正则表达式语法详解

    好久都没有写博客了,主要是太懒了,尤其是在阳春三月,风和日丽的日子,太阳暖暖的照在身上,真想美美的睡上一觉.就导致了这篇博客拖到现在才开始动笔,javascript的正则这一块也不是什么新的东西,主要 ...

最新文章

  1. 大数据如何有序地“变废为宝”
  2. Android P 凹口屏支持,打造全面屏体验
  3. 开始简单项目的第二周
  4. oracle 1天后,Oracle Code One - 第1天 精彩亮点回顾
  5. dell服务器启动顺序如何设置_如何即时设置一个静态文件服务器
  6. Windows phone7 动态添加控件
  7. mysql not in 的坑 -- null 值
  8. jquery获取和设置属性_jQuery获取属性,设置属性,删除属性
  9. Win10启用linux子系统(Linuxer福利)
  10. 微服务架构学习笔记(一):gRPC Spring Boot Starter 2.2.0 发布,及使用步骤
  11. 同济大学高数第七版下册对梯度的解释
  12. 基于Java的电子会议预约管理系统
  13. autojs各种插件以及教程模板
  14. YOLOX 论文笔记
  15. xmos固件u8_XMOS USB数字界面 模块 XU208 U8升级版CPL
  16. 管家婆服务器备份文件夹,请问管家婆数据备份在哪里?如何恢复?
  17. 【转】ubuntu下为APT设置代理
  18. Leetcode 704.二分查找 27.移除元素 代码随想录day1
  19. 艺赛旗RPA验证码处理系列(三):破解极验滑动验证码
  20. 2022淘宝618超级喵运会玩法来了 超级喵运会有哪些攻略方法

热门文章

  1. Java:判断是否是闰年
  2. php option默认选中的值,laravel中数据显示方法(默认值和下拉option默认选中)
  3. 2023牛客寒假算法基础集训营5(通过ABCDHIKL) I题有详解(F已补)
  4. 龙之谷手游WebVR技术分享
  5. Photoshop-图像的排版合并以及优化
  6. r55600g参数 r5 5600g功耗 r5 5600g相当于i几 r55600g核显是什么水平
  7. ofo 遭千万人退押金
  8. Vue实现大文件分片上传,包括断点续传以及上传进度条
  9. 我与前任们的故事——暨2021个人年度报告
  10. Windows10系统下wsappx占用CPU资源过高