Lua面向对象编程

本文介绍了Lua如何通过table和元表机制来模拟面向对象编程,详细阐述了如何定义类、创建对象以及实现单继承。通过示例代码展示了Lua中对象的创建过程,强调理解元表和元方法在Lua面向对象编程中的关键作用。
摘要由CSDN通过智能技术生成

概述

Lua中的table本身就是一种对象

  • table和对象一样可以拥有状态、属性,以及对这些状态和属性的操作
  • table和对象一样拥有独立其值的标志(self)
  • table和对象一样具有独立于创建者的生命周期,换句话说,就是自己掌握自己的生命周期

但是,和C++、Java语言不一样,它并不存在显示的关键词(例如,Class)来描述一个类,所以我们只能利用table和元表机制来模拟类

Lua的面向对象是建立在元表和元方法这一机制上的,应当清楚的明白Lua的key-value的查询过程:

这里写图片描述

模拟类

最简单的定义类的方法,即直接使用Lua内置的table描述类的属性和行为

Account = {
    balance = 100,

    withdraw = function(v)
        Account.balance = Account.balance - v
    end
}

如果拿C++来类比的话,看起来有点像如下形式

class Account{
    public int balance = 100;
    public void withdraw(int value){
        balacne -= value;
    }
}   

不同的是在Lua中Account只是一个表,相当于一个对象,而C++中Account则是类,可以生成多个对象。
而且Lua的Account实现有很多值得吐槽的地方

  • 在函数withdraw中直接访问全局变量Account
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值