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的面向对象.说到面向对象,我不得不提一下面向过程,因为本人在初学时,常常分不清楚面向对象和面向过程,下面就来给大家介绍一下它们的区别: 面向对象专注于由哪个对象来处理 ...
随机推荐
- 嵌入式 python之str操作
1.字符串的对齐方式:①:center(int[,str])>>> string = 'Fishhat'>>> string.center(55)' ...
- WinPcap编程(前言&&学习)
计算机网络课设要求用WinPcap写对ARP包的接收与发送. 所以学了一下WinPcap的内容. 参考的博客: http://blog.csdn.net/htttw/article/details/7 ...
- raspberry pi 3 截图及查看
RASPBIAN JESSIE WITH PIXEL Image with PIXEL desktop based on Debian Jessie Version:November 2016 Rel ...
- 一个处理Date与String的工具类
public class DateUtil { private DateUtil(){ } public static final String hhmmFormat="HH:mm" ...
- 在controller写sql在mapper拼接
这是在controller里面: String search = ""; if("null".equals(start_time)||"". ...
- 在安装包运行时指定Component的安装路径
Basic MSI工程类型中如果实现动态指定安装路径的功能,下面介绍的方法也适用于InstallScript MSI工程. 1. 在Setup Design中找到相对应的Component. 2. 点 ...
- 【转】ASCII码表在线查询
原文网址:http://www.litefeel.com/tools/ascii.php ASCII码对照表 下表列出了字符集中的 0 - 127 (0x00 - 0x7F). 十进制 十六进制 字符 ...
- Hadoop MapReduce中压缩技术的使用
Compression and Input Splits 当我们使用压缩数据作为MapReduce的输入时,需要确认数据的压缩格式是否支持切片? 假设HDFS中有一个未经压缩的大小为1GB的文 ...
- socket编程里的read和recv函数【转载】
本文转载自:http://blog.163.com/like12@126/blog/static/63023403201291983117551/ 1.read 与 recv 区别 read 原则: ...
- linux awk命令详解【转载】
本文转载自:http://www.cnblogs.com/ggjucheng/archive/2013/01/13/2858470.html 简介 awk是一个强大的文本分析工具,相对于grep的查找 ...