0.简单前言
1、面向对象主要四个特征:封装,继承,多态,抽象
2、Lua是种简单精致小巧的语言,其本质是个表(table),变量和方法皆可看作为该表的元素。
P.S. 该博客和代码为个人编写习惯以及为后续博客内容拓展服务考虑,若有错误等不周到的地方还请包涵以及指出。
1.类
尽管可能不太完美,但我们依旧可以通过元表的方式实现类以及类的继承。
-- 元类
local Rectangle = {
area = 0, length = 0, breadth = 0}
-- 派生类的方法 new
function Rectangle:new (o,length,breadth)
local o = o or {
}
setmetatable(o, self) -- 将Rectangle赋值给要返回的对象作为元表
self.__index = self -- 通过 .__index 传递元表元素
self.length = length or 0
self.breadth = breadth or 0
self.area = length*breadth;
return o
end
-- 派生类的方法 printArea
function Square:printArea ()
print("矩形面积为 ",self.area)
end
简单结构就是这样,Square类已经继承Rectangle的属性以及方法,同时还拓展出自己的新方法 printArea(),但实际运用起来并不方便。
2.改进
class类
用于构建模板以及进行类的继承
Class.lua
-- params:要实例的类,继承
function class(classname