zoukankan      html  css  js  c++  java
  • Lua程序设计(四)面向对象类继承

    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() --调用覆盖函数

     ③输出结果

  • 相关阅读:
    sublime text 前端插件安装
    echarts常用的配置项
    2018年okr
    charlse配置
    运维笔记
    移动端开发兼容问题全记录
    centos6下python开发环境搭建
    centos安装python2.7
    centos6安装MariaDB
    pzea上centos6安装mysql57
  • 原文地址:https://www.cnblogs.com/tinywan/p/6950194.html
Copyright © 2011-2022 走看看