function account:new(o)

o = o or {}

setmetatable(o,self)

self.__index=seif

return o

end


function account:hello()

print("hello")

end


s1=account:new()

s2=s1:new{limet=100}

s1继承account,s2继承s1  

------------------------------

local function search(k,parents)

for i=1,#oarents do

if parents[i][k] then return parents[i][k] end

end

end


function CreateClass(...)    多重继承

local newc={}     --新的类

local parents={...}  --父类

setmetatable(newc,{__index=function(t,k)

return search(k,parents)          --- 缓存方法  v=search(k,parents)    t[k]=v      return v 

end})

newc.__index=newc   --将news作为实例的元表

function newc:new(o)

o = o or {}

setmetatable(o,newc)

return o

end

return newc

end


newClass = CreateClass(account)

s = newClass:new()

s.hello()


-----------------

私密性:

function newAccount(init)

local self={balance=init}

local set=function(val)

self.balance=val

end

local get=function()

return self.balance

end

return {

set=set,

get=get

}

end

acc = newAccount(100)

print(acc.get())

self是闭包的变量,不能直接访问


function newObject(value)

return function(action,v)

if action == "get" then return value

else if action == "set" then value=v

else error("invalid action")

end 

end

end

d=newObject(0)

print(d("get"))

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值