对象是由属性、方法组成。在Lua中我们可以使用table来描述出属性及方法。
简单示例
下列示例中,Person类有两个属性及两个方法。
Person = {age = 0, name = ""}-- 类的new方法function Person:new(age, name)o = {}setmetatable(o, self) -- 将self,继承给oself.__index = self -- 去元表(Metatable)那一节看是啥意思self.age = age or 0self.name = name or ""return oend-- 类的普通方法function Person:getAge()return self.ageend
创建对象
创建对象是为类的实例分配内存的过程。每个类都有属于自己的内存并共享公共数据。
p1 = Person:new(18, "oyyh")
访问属性
访问属性,我们可以用 .来访问
print(p1.age)
访问成员函数(方法)
可以使用 :来访问成员函数
print(p1:getAge())
完整示例
定一个类,单独放一个文件:Person.lua
local Person = {age = 0, name = ""}-- 类的new方法function Person:new(age, name)local o = {}setmetatable(o, self) -- 将self,继承给oself.__index = self -- 去元表(Metatable)那一节看是啥意思self.age = age or 0self.name = name or ""return oend-- 类的普通方法function Person:getAge()return self.ageendreturn Person
在另一个文件中引用该类:Client.lua
Person = require "Person.lua" -- 引入类p1 = Person:new(18, "oyyh") -- 实例化对象print(p1.name) -- 调用对象的name属性print(p1:getAge()) -- 调用对象中的getAge()方法
