文章摘要
这篇文章主要介绍了LUA语言中的面向对象编程(OOP)基础概念。文章通过定义Person类来讲解了对象、属性、方法以及 prototype-based 的对象创建方式。Person类的属性和方法可以通过两种方式定义:一种是通过函数直接定义,另一种是通过构造函数new创建对象。文章还介绍了继承机制,通过Student类继承Person类,并展示了如何通过设置属性和调用方法来实现对象的操作。此外,文章还解释了元表(metatable)的使用,以及如何在对象中添加新属性。整篇文章通过具体的代码示例,生动地演示了LUA面向对象编程的基本原理和实现方法。
— Czhenya Lua 面向对象
— 对于一个对象来说, 属性 方法
–[[ 两种定义函数的方式
person.eat=function()
print(person.name..”在写LUA”)
end
function person.eat()
print(person.name..”在写LUA”)
end
–]]
–作为原型
Person={name=’Czhena’,age=22}
function Person:eat()
print(self.name..”的年龄是”..self.age)
end
function Person:new(o) — 若o是空的则返回false
local t=o or {}
–[[ 和下面设置结果一样,只是两种不同的方式
setmetatable{t,self}
self.__index=self
–]]
setmetatable(t,{__index=self}) –设置元表
–调用一个属性的时候,如果t中不存在,就会在__index所指的table中查找
return t
end
— 类似于通过构造函数创建对象
person1=Person:new({weight=100})
person2=Person:new()
print(person1.name)
print(person1.weight)
print(person2.name)
person1.name=”CZY” –不会改变元表,添加到person.name
person1:eat()
person2:eat()
–继承
Student=Person:new()
Student.grade=1
stu1=Student:new()
stu1:eat()
print(stu1.grade)
— Czhenya Lua 面向对象
— 对于一个对象来说, 属性 方法
–[[ 两种定义函数的方式
person.eat=function()
print(person.name..”在写LUA”)
end
function person.eat()
print(person.name..”在写LUA”)
end
–]]
–作为原型
Person={name=’Czhena’,age=22}
function Person:eat()
print(self.name..”的年龄是”..self.age)
end
function Person:new(o) — 若o是空的则返回false
local t=o or {}
–[[ 和下面设置结果一样,只是两种不同的方式
setmetatable{t,self}
self.__index=self
–]]
setmetatable(t,{__index=self}) –设置元表
–调用一个属性的时候,如果t中不存在,就会在__index所指的table中查找
return t
end
— 类似于通过构造函数创建对象
person1=Person:new({weight=100})
person2=Person:new()
print(person1.name)
print(person1.weight)
print(person2.name)
person1.name=”CZY” –不会改变元表,添加到person.name
person1:eat()
person2:eat()
–继承
Student=Person:new()
Student.grade=1
stu1=Student:new()
stu1:eat()
print(stu1.grade)
© 版权声明
文章版权归作者所有,未经允许请勿转载。



