zoukankan      html  css  js  c++  java
  • Lua学习笔记(六)

    Lua面向对象

    封装

    -- 元类
    People={isHumen=true}		-- 此处定义的元素都是相当于C++的静态成员变量
    
    -- 基类方法new
    function People:new(o,n,a)
    	o=o or {}
    	setmetatable(o,self)	-- self相当于C++的this指针,但是这里指代的是元类People而不是对象o
    	self.__index=self
    	o.name=n				-- 用self代替o相当于C++中给静态成员变量赋值
    	o.age=a
    	return o
    end
    
    -- 基类元方法__tostring
    function People:__tostring()
    	local sum="名字为:"..self.name.."
    年龄为:"..self.age -- 此处self指代的是实际调用时的对象
    	return sum
    end
    
    -- 基类方法walk
    function People:walk()
        print("我正在走!")
    end
    
    -- 创建对象
    me=People:new(nil,"Jaxes",21)
    
    -- 调用对象中的函数
    print(me)		-- 等价于print(tostring(me))
    me:walk()		-- 等价于me.walk(me)
    

    继承

    -- 类Worker派生自People类
    Worker=People:new()
    
    -- 派生类
    function Worker:new(o,n,a,id)
    	o=o or People:new(o,n,a)
    	setmetatable(o,self)
    	self.__index=self
    	o.id=id
    	return o
    end
    
    function Worker:__tostring()
    	local sum=People.__tostring(self)
    	sum=sum.."
    ID为:"..self.id
    	return sum
    end
    
    worker=Worker:new(nil,"kaka",55,01)
    print(worker)
    worker:walk()		-- 继承自父类函数walk
    

    多态

    这个部分暂时还不清楚怎么搞,暂时做为后续储备内容

  • 相关阅读:
    javascript 心得
    pdfbox加载pdf时遇到wrappedioexception报错处理方式
    缩写
    Java学习——连接数据库
    oracle 关于null值排序
    Java学习笔记(二)
    kvm安装windows系统
    导入excel文件信息
    shell脚本根据端口号自启动jar
    spirngboot使用netty实现UDP协议接收数据
  • 原文地址:https://www.cnblogs.com/JaxesZ/p/11217032.html
Copyright © 2011-2022 走看看