Lua程序设计(四)面向对象类继承

简介: 1.类继承 ①代码Sharp = { _val = 1} --① 父类function Sharp:new() local new_sharp = { } self.__index = self --②,self == Sharp setmetatable(n...

1.类继承

 ①代码

Sharp = { _val = 1}  --①  父类

function Sharp:new()
    local new_sharp = { }
    self.__index = self  --②,self == Sharp
    setmetatable(new_sharp, self)  --return new_sharp
end

function Sharp:sharp_func()
    print("Sharp call sharp_func")
end

function Sharp:name()
    print("Sharp call name")
end

function Sharp:val()
    print(string.format("Sharp call val %d", self._val))
end


Circle = Sharp:new() --① 子类

function Circle:new()
    local new_circle = {}
    self.__index = self --②,self == Circle
    setmetatable(new_circle, self) --return new_circle
end

--新函数
function Circle:circle_func()
    print("Circle call circle_func")
end

--覆盖函数name
function Circle:name()
    print("Circle call name")
end

--覆盖函数val
function Circle:val()
    print(string.format("Circle call val %d", self._val))
end

②调用代码

local circle = Circle:new()
circle._val = 2 --覆盖赋值
circle:sharp_func() --调用父类函数
circle:circle_func() --调用新函数
circle:name() --调用覆盖函数
circle:val() --调用覆盖函数

 ③输出结果

 

目录
相关文章
|
9月前
|
C++ 索引 Python
Lua中self 、自索引及其面向对象应用代码示例
Lua中self 、自索引及其面向对象应用代码示例
|
4月前
lua面向对象(类)和lua协同线程与协同函数、Lua文件I/O
Lua的面向对象编程、协同线程与协同函数的概念和使用,以及Lua文件I/O操作的基本方法。
58 4
lua面向对象(类)和lua协同线程与协同函数、Lua文件I/O
|
8月前
|
程序员
老程序员分享:lua类实现
老程序员分享:lua类实现
39 2
|
8月前
|
C++
2dx lua自定义类
2dx lua自定义类
|
8月前
|
安全 C++ Python
lua程序设计(一)
lua程序设计(一)
|
数据采集 Linux C++
【Lua】《Lua 程序设计》摘录
【Lua】《Lua 程序设计》摘录
118 3