Lua学习笔记4:类及集成的实现
2017-03-02 17:26
363 查看
Lua学习笔记4:类及集成的实现
2014-07-12 0 个评论
来源:程序员——在路上
收藏
我要投稿
-- Lua中类的实现
-------------------------------- 基类 ----------------------------
classBase = {x = 0,y = 0} -- x,y为类的成员变量
classBase.__index = classBase -- 这句是重定义元表的索引,必须要有
--模拟构造体,一般名称为new()
function classBase:new(x,y)
local self = {} -- 初始化对象自身
setmetatable(self, classBase) -- 必须要有
self.x = x
self.y = y
return self
end
function classBase:show() -- 类的成员函数
print(self.x,self.y)
end
-- 基类测试代码
objA = classBase:new(1,2) -- 调用构成函数创建类对象
objA:show() -- 调用类方法
print(objA.x,objA.y) -- 访问类的成员变量
-- # lua提供了用冒号的方式在一个方法定义中添加一个额外的参数self,
-- # 这样调用bjA.show()会报错,self为nil
-- # print(objA:x,objA:y)错误的
-------------------------------- 继承:派生类 ----------------------------
classDerived = {z=0} -- 增加成员变量
setmetatable(classDerived, classBase) -- 设置类型为classBase
classDerived.__index = classDerived -- 和类定义一样,索引值表示自身
-- 构造函数
function classDerived:new(x,y,z)
local self = {}
self = classBase:new(x,y) --将对象自身设定为父类,相当于调用父类的构造函数
setmetatable(self, classDerived) -- 将对象自身元表设定为classDerived
self.z = z --新的属性初始化,如果没有将会按照声明=0
return self
end
-- 重写父类方法
function classDerived:show()
print(self.x, self.y, self.z)
end
-- 增加方法
function classDerived:showSum()
print(self.x + self.y + self.z)
end
-- 派生类测试代码
objB = classDerived:new(1,2,3) -- 调用构成函数创建类对象
objB:show() -- 调用重写的方法,体现了多态
objB:showSum() -- 调用新加的方法
2014-07-12 0 个评论
来源:程序员——在路上
收藏
我要投稿
-- Lua中类的实现
-------------------------------- 基类 ----------------------------
classBase = {x = 0,y = 0} -- x,y为类的成员变量
classBase.__index = classBase -- 这句是重定义元表的索引,必须要有
--模拟构造体,一般名称为new()
function classBase:new(x,y)
local self = {} -- 初始化对象自身
setmetatable(self, classBase) -- 必须要有
self.x = x
self.y = y
return self
end
function classBase:show() -- 类的成员函数
print(self.x,self.y)
end
-- 基类测试代码
objA = classBase:new(1,2) -- 调用构成函数创建类对象
objA:show() -- 调用类方法
print(objA.x,objA.y) -- 访问类的成员变量
-- # lua提供了用冒号的方式在一个方法定义中添加一个额外的参数self,
-- # 这样调用bjA.show()会报错,self为nil
-- # print(objA:x,objA:y)错误的
-------------------------------- 继承:派生类 ----------------------------
classDerived = {z=0} -- 增加成员变量
setmetatable(classDerived, classBase) -- 设置类型为classBase
classDerived.__index = classDerived -- 和类定义一样,索引值表示自身
-- 构造函数
function classDerived:new(x,y,z)
local self = {}
self = classBase:new(x,y) --将对象自身设定为父类,相当于调用父类的构造函数
setmetatable(self, classDerived) -- 将对象自身元表设定为classDerived
self.z = z --新的属性初始化,如果没有将会按照声明=0
return self
end
-- 重写父类方法
function classDerived:show()
print(self.x, self.y, self.z)
end
-- 增加方法
function classDerived:showSum()
print(self.x + self.y + self.z)
end
-- 派生类测试代码
objB = classDerived:new(1,2,3) -- 调用构成函数创建类对象
objB:show() -- 调用重写的方法,体现了多态
objB:showSum() -- 调用新加的方法
相关文章推荐
- 一个无聊男人的疯狂《数据结构与算法分析-C++描述》学习笔记 用C++/lua/python/bash的四重实现(4)二分搜索算法
- DELPHI中集成LUA脚本学习笔记1_初探LUA
- Lua学习笔记5:类及继承的实现
- java学习笔记--springboot集成UrlRewrite实现URL伪静态化[jar包和war包]
- SpringBoot学习笔记(5) Spring Boot集成Redis实现自动配置
- 一个无聊男人的疯狂《数据结构与算法分析-C++描述》学习笔记 用C++/lua/python/bash的四重实现(5)欧几里得算法欧几里得算法求最大公约数
- Lua 学习笔记之C API 遍历 Table实现代码
- Lua学习笔记Day4-Lua实现链表
- Lua学习笔记(五):面向对象的实现
- 使用Nginx+Lua实现的WAF - 学习笔记
- 一个无聊男人的疯狂《数据结构与算法分析-C++描述》学习笔记 用C++/lua/python/bash的四重实现(7)习题2.8 随机数组的三种生成算法
- Lua学习笔记5:类及继承的实现
- 持续集成学习笔记-入门篇(6)持续集成自动化(三):具体实现方式二
- Lua学习笔记Day5-Lua实现窗口类
- 一个无聊男人的疯狂《数据结构与算法分析-C++描述》学习笔记 用C++/lua/python/bash的四重实现(2) IntCell类
- DELPHI中集成LUA脚本学习笔记2_调用LUA函数(详)
- 【Lua学习笔记】 Lua中实现面向对象,转自云风的博客
- NodeJS学习笔记 - Apache反向代理集成实现
- torch学习笔记3.1:实现自定义模块(lua)
- MyBatis学习笔记-Spring集成DAO层实现方式记录