面向对象

面向对象编程(Object Oriented Programming,OOP)是一种非常流行的计算机编程架构。 java,c++,.net等都支持面向对象

面向对象特征

  • 1) 封装:指能够把一个实体的信息、功能、响应都装入一个单独的对象中的特性。

  • 2) 继承:继承的方法允许在不改动原程序的基础上对其进行扩充,这样使得原功能得以保存, 而新功能也得以扩展。这有利于减少重复编码,提高软件的开发效率。

  • 3) 多态:同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果。在运行时, 可以通过指向基类的指针,来调用实现派生类中的方法。

  • 4) 抽象:抽象(Abstraction)是简化复杂的现实问题的途径,它可以为具体问题找到最恰当的类定义, 并且可以在最恰当的继承级别解释问题。

一)Lua 中面向对象

对象由属性和方法组成,lua中的面向对象是用table来描述对象的属性,function表示方法; LUA中的类可以通过table + function模拟出来。

一个简单实例

以下简单的类代表矩形类,包含了二个属性:length 和 width;getArea方法用获取面积大小

新建rect.lua脚本

local rect = {length = 0, width = 0}

-- 类的方法 new
function rect:new (length,width)
  local o = {
     --设定各个项的值
     length = length or 0,
     width = width or 0
  }
  setmetatable(o, {__index = self})
  return o
end

-- 类的方法 getArea
function rect:getArea ()
  return self.length * self.width
end

return rect

引用模块

创建对象

创建对象是为类的实例分配内存的过程。每个类都有属于自己的内存并共享公共数据。

访问属性 ----》 rect1.length

访问成员函数 ----》rect1:getArea()

二)Lua继承

解析:

1.obj实例shape,获取shape的实例对象obj的元表,这样的话当前对象self 的原表设置为实例对象obj的元表:这样当方法在子类中查询不到时,再去父类中去查找。

Last updated

Was this helpful?