Lua 基础知识-面向对象
通过函数闭包的方式来实现面向对象
-- 通过函数闭包的方式来实现面向对象 function People(name)
local self = {}
local function init()
self.name = name
end self.sayHi = function()
print("Hello"..self.name)
end
init()
return self
end --local p = People("XiaoLi")
--p:sayHi() -- 继承
function Man(name) local function init() end local self = People(name) self.sayHi() -- 调用父类的函数 self.sayHi = function()
print("重写父类的函数 sayHi")
end
return self
end local m = Man("隔壁老王")
m:sayHi()
通过复制表的方式来实现面向对象
-- Lua语言面向对象之复制表的方式面向对象 function clone(tab)
local ins = {}
for key, var in pairs(tab) do
ins[key] = var
end
return ins
end function copy(dist,tab)
for key, var in pairs(tab) do
dist[key] = var
end
end People ={} function People.sayHi(self)
print("People sayHi"..self.name) -- .. 表示字符串连接
end People.new = function(name)
local self = clone(People)
self.name = name return self
end
--
--local p = clone(People)
--p.sayHi() local p = People.new("Jinpp")
-- p.sayHi(p) -- 运行结果 People sayHiJinpp
p:sayHi() -- 运行结果 People sayHiJinpp -- 类的继承
Man = {}
Man.new = function(name)
local self = People.new(name)
copy(self,Man)
return self
end
--
Man.sayHello = function()
print("Man say Hello")
end -- 函数的重写
Man.sayHi = function(self)
print("Man sayHi "..self.name)
end local m = Man.new("Lisi")
m:sayHello()
m:sayHi()
蛮简单的特别好理解。2016年01月24日21:43:39
Lua 基础知识-面向对象的更多相关文章
- Step By Step(Lua基础知识)
Step By Step(Lua基础知识) 一.基础知识: 1. 第一个程序和函数: 在目前这个学习阶段,运行Lua程序最好的方式就是通过Lua自带的解释器程序,如: /> l ...
- Java基础知识➣面向对象(八)
概述 Java和C#都是面向对象语言,面向对象编程是目前高级语言习惯的编程模式,与C++编写过程编程而言,面向对象使用起来高效.灵活:面向对象的三个特征:封装.继承和多态. Java面向对象 1.类封 ...
- C#基础知识-面向对象思想之继承(八)
上一篇的标题编程思想我觉得不是很符合主题,因为编程思想的范围太大了,不仅仅是封装 继承 多态,所以比较符合主题的应该是面向对象思想.这一篇中将继续叙述面向对象思想中的继承. 从字面来看继承表达的意思已 ...
- lua基础知识笔记
一.lua中的数据类型 1.数值 a = 1 b = 1.2 2.字符串 c = "hello world" 3.布尔 d = true f = false 4.表(Table) ...
- Python类基础知识(面向对象基础)
#首先 我们需要了解 面向过程是什么 面向对象是什么 我们为什么需要使用面向对象 面向过程:根据业务逻辑从上到下写垒代码 面向对象:根据代码对函数进行分类和封装 区别:解决问题的逻辑不同,但是都能解决 ...
- Java基础知识二次学习--第三章 面向对象
第三章 面向对象 时间:2017年4月24日17:51:37~2017年4月25日13:52:34 章节:03章_01节 03章_02节 视频长度:30:11 + 21:44 内容:面向对象设计思 ...
- Python 面向对象基础知识
面向对象基础知识 1.什么是面向对象编程? - 以前使用函数 - 类 + 对象 2.什么是类什么是对象,又有什么关系? class 类: def 函数1(): pass def 函数2(): pass ...
- C#基础知识之面向对象以及面向对象的三大特性
在C#基础知识之类和结构体中我详细记录了类.类成员.重载.重写.继承等知识总结.这里就记录一下对面向对象和面向对象三大特性的广义理解. 一.理解面向对象 类是面向对象编程的基本单元,面向对象思想其实就 ...
- PHP基础入门(五)---PHP面向对象实用基础知识
前言: 今天来和大家介绍一下PHP的面向对象.说到面向对象,我不得不提一下面向过程,因为本人在初学时,常常分不清楚面向对象和面向过程,下面就来给大家介绍一下它们的区别: 面向对象专注于由哪个对象来处理 ...
随机推荐
- 水仙花 AC 杭电
水仙花数 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submi ...
- 如何改变dreamweaver的编码方式
- 理解和使用NT驱动程序的执行上下文
理解Windows NT驱动程序最重要的概念之一就是驱动程序运行时所处的“执行上下文”.理解并小心地应用这个概念可以帮助你构建更快.更高效的驱动程序. NT标准内核模式驱动程序编程的一个重要观念是某个 ...
- POJ1159 Palindrome(dp)
题目链接. 分析: 感叹算法的力量. 方法一: 设 dp[i][j] 为字符串 s, 从 i 到 j 需要添加的最少字符数. 那么如果 s[i] == s[j], dp[i][j] = dp[i+1] ...
- -_-#【Canvas】FPS
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...
- Delphi TcxTreeList 读取 TcxImageComboBoxItem类型的值
Delphi TcxTreeList 读取 TcxImageComboBoxItem类型的值: Node.Values[wiNodeLevel.ItemIndex]://值 Node.Texts[ ...
- delphi 句柄
句柄Handle顾名思义就是把柄,把手的意思 ,得到了某对象的句柄可以任意控制此对象 .句柄是一种指向指针的指针.不是每个组件都有句柄,只有窗口控件等(*.模块(module)*.任务(task)*. ...
- word页面不对齐,如何解决?
http://blog.163.com/haibianfeng_yr/blog/static/34572620201157105439516/
- HDOJ 1020 Encoding
Problem Description Given a string containing only 'A' - 'Z', we could encode it using the following ...
- dos 下 注册win 组件 ocx 后缀的
C:\WINDOWS\system32>regsvr32 NTGraph.ocx