zoukankan      html  css  js  c++  java
  • 一种简单对象的实现方式

    先来看一段程序:

    function create(name, id)
          local obj = { name = name, id = id }
          function obj:SetName(name)
            self.name = name
          end
          function obj:GetName()
            return self.name
          end
          function obj:SetId(id)
            self.id = id
          end
          function obj:GetId()
            return self.id
          end
          return obj
       end
    
       o1 = create("Sam", 001)
    
       print("o1's name:", o1:GetName(), "o1's id:", o1:GetId())
    
       o1:SetId(100)
       o1:SetName("Lucy")
    
       print("o1's name:", o1:GetName(), "o1's id:", o1:GetId())

    输出结果:

    o1's name: Sam o1's id: 1
    o1's name: Lucy o1's id: 100

    对象工厂模式:

    如前面代码的create函数

    用表表示对象:

    把对象的数据和方法都放进一张表内,虽然没有隐藏私有成员,但对于简单脚本来说可以完全接受

    成员方法的定义:

    function obj:method(a1,a2,…)…end --等价于
        function obj.method(self,a1,a2,…)…end --等价于 
        obj.method=function(self,a1,a2,...)...end

    成员方法的调用:

    obj:method(a1,a2,...) --等价于
        obj.method(obj,a1,a2,...)
  • 相关阅读:
    上下界网络流——概念解析与快速入门(待修改)
    maomao的现在与未来
    exgcd证明和最基础应用
    快速入门Splay
    luogu 2515
    bzoj 1996
    *51nod 1409
    51nod 1412
    51nod 1503
    51nod 1020
  • 原文地址:https://www.cnblogs.com/liwenbin/p/2682640.html
Copyright © 2011-2022 走看看