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的面向对象.说到面向对象,我不得不提一下面向过程,因为本人在初学时,常常分不清楚面向对象和面向过程,下面就来给大家介绍一下它们的区别: 面向对象专注于由哪个对象来处理 ...
 
随机推荐
- C语言字符串操作函数整理
			
整理C语言字符串相关的函数,以程序方式验证,以注释方式做说明. #include<stdio.h> #include<string.h> #include<stdlib. ...
 - Android 数据库读取数据显示 [5]
			
2016-12-1 课程内容 昨天学了Android数据库升级.降级.创建 今天把数据库表里面的数据读取出来显示到手机屏幕上 下面代码是MainActivity.java 的代码 package co ...
 - 新发现:AirDroid(用Web端控制自己的手机发信息)
			
http://web.airdroid.com/ 好多功能呀,有空研究研究 http://jingyan.baidu.com/article/b24f6c82cd4ade86bfe5daf3.html ...
 - 霍布森选择效应(Hobson choice Effect)
			
1631年,英国剑桥商人霍布森从事马匹生意,他说,你们买我的马.租我的马,随你的便,价格都便宜.霍布森的马圈大大的.马匹多多的,然而马圈只有一个小门,高头大马出不去,能出来的都是瘦马.赖马.小马,来买 ...
 - POJ2084 Game of Connections(数学,dp)
			
题目链接. 分析: 简单的 Catalan 数 将x~y编号,设解为 d(x, y), d(x, y) = {d(x+1,i-1)*d(i+1,y)}, 其中 x+1<= i <= y, ...
 - POJ2251 Dungeon Master(bfs)
			
题目链接. 题目大意: 三维迷宫,搜索从s到e的最小步骤数. 分析: #include <iostream> #include <cstdio> #include <cs ...
 - combobox的不常用的方法和将txt文本内容加到textbox中显示
			
将一个的datatable绑定到下拉框,指定显示某列的数据 cbx.DataSource = null; DataSet dsJH = new DataSet(); OperatePort.Opera ...
 - Android Studio SDK更新失败解决方法
			
1.设置host 首先在windows/system32/drivers/etc/hosts中设置hosts,需要管理员权限.对hosts进行编辑: sudo vim hosts #Google主页 ...
 - Two Sum 解答
			
Question: Given an array of integers, find two numbers such that they add up to a specific target nu ...
 - 数组在C++和java中的区别
			
几乎所有的程序设计语言都支持数组.在C和C++中使用数组是很危险的.因为C和C++中的数组就是内存块.如果一个程序要访问其自身内存块之外的数组,或者在数组初始化之前使用它,都会产生难以预料的后果. j ...