面向对象编程
(面向对象编程,OOP)是一种非常流行的计算机编程架构。
Lua中最基本的结构是table,所以需要用table来描述对象的属性。
Lua中的函数可以用来表示方法。然后可以通过表+函数来模拟Lua中的类。
简单示例:
-- Czhenya Lua 面向对象 -- 对于对象,属性方法 --[[定义函数的两种方式 www.genealogy-computer-tips.com = function() print(www.genealogy-computer-tips.com.."正在编写LUA") 结尾 函数 www.genealogy-computer-tips.com() print(www.genealogy-computer-tips.com.."正在编写LUA") 结尾 --]] ——作为原型 人 = {姓名 = 'Czhena',年龄 = 22} 函数人:吃() print(www.genealogy-computer-tips.com.."年龄是"..self.age) 结尾 function Person:new(o) -- 如果 o 为空则返回 false 本地 t = o 或 {} --[[结果和下面的设置是一样的,只是两种方式不同 设置元表{t,self} 自我.__索引=自我 --]] setmetatable(t,{__index = self}) --设置元表 --调用属性时,如果t中不存在,则在__index指向的表中查找。 返回t 结尾 -- 类似于通过构造函数创建对象 person1 = Person:new({权重 = 100}) person2 = 人:new() print(person1.姓名) print(person1.体重) print(person2.姓名) www.genealogy-computer-tips.com = "CZY" -- 不会更改元表,添加到 www.genealogy-computer-tips.com 人1:吃() 人2:吃() - 继承学生 = 人:new() 学生.年级 = 1 Stu1 = 学生:new() Stu1:吃() 打印(stu1.grade)
冒号和点定义函数的区别:
-- 使用冒号和点来定义函数。建议使用什么来定义函数以及使用什么来调用它? 人= {name =“Czhenya”,年龄= 22} 函数人:eat() print(www.genealogy-computer-tips.com.."年龄是"..self.age) 结尾 人.吃(人) 一个=人 --Colon调用self自动赋值 一个:吃() --通过dot调用时,self不会自动赋值,必须通过参数传递。 a.吃(a)
总结