Lua学习之10:面向对象与继承

1、简单的面向对象函数

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
local myCreate = create("Yuxikuo",123)

print("myCreate's name:",myCreate:getName(),"myCreate's id:",myCreate.getId(myCreate))

myCreate:setId(000)
myCreate:setName("Pac")

print("myCreate's name:",myCreate:getName(),"myCreate's id:",myCreate:getId())
成员方法的定义:
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,...)

2、简单继承

local function CreateRobot(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

local function createFootballRobot(name,id,position)
        local obj = CreateRobot(name,id)
        obj.position = position

        function obj:setPosition(p)
                self.position = p
        end

        function obj:getPosition()
                return self.position
        end

        return obj
end

local mycreateFootballRobot = createFootballRobot("Tom",1000,"广州")
print("mycreateFootballRobot's name:",mycreateFootballRobot:getName(),"mycreate's id:",mycreateFootballRobot:getId(),mycreateFootballRobot:getPosition())

mycreateFootballRobot:setName("XXX")
mycreateFootballRobot:setId(1990)
mycreateFootballRobot:setPosition("北京")
print("mycreateFootballRobot's name:",mycreateFootballRobot:getName(),"myCreate's id:",mycreateFootballRobot:getId(),mycreateFootballRobot:getPosition())

简单继承的特点是不够动态,
1和2的运行结果如下:

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值