Rectangle = {width = , height = , area = };

function Rectangle:new(o, width, height)
o = o or {};
setmetatable(o, self);
self.__index = self; self.width = width or ;
self.height = height or ; self.area = width * height; return o;
end function Rectangle:Area()
print("矩形面积:" .. self.area);
end r = Rectangle:new(nil, , );
print(r.width);
r:Area();
Car = {};

function Car:new(o)
o = o or {};
setmetatable(o, self);
self.__index = self; return o; end function Car:Driver()
print("car can driver");
end BMW = Car:new(nil); function BMW:new(o)
o = o or {};
setmetatable(o, self);
self.__index = self; return o;
end --此处重写了父类Car类的Driver方法
function BMW:Driver()
print("BMW car can driver");
end print("代码运行:");
c = Car:new(nil);
c.Driver(); print("BMW继承Car");
bmw = BMW:new();
bmw.Driver();
Car = {};

function Car:new(o)
o = o or {};
setmetatable(o, self);
self.__index = self; return o; end function Car:Driver()
print("car can driver");
end function Car:Oil()
print("I need Oil");
end BMW = Car:new(nil); function BMW:new()
o = o or {};
setmetatable(o, self);
self.__index = self; return o;
end --此处重写了父类Car类的Driver方法
function BMW:Driver()
print("重写Driver:BMW car can driver");
end function BMW:Price()
print("BMW cost 10000");
end print("-------代码运行-------");
c = Car:new();
c.Driver();
c.Oil(); print("-------BMW继承Car-------");
bmw = BMW:new();
bmw.Driver(); bmw:Oil();
bmw:Price(); --调用类中方法可用:或.来调用

base.lua脚本

Base = {};

function Base:new(o)
o = o or {};
setmetatable(o, self);
self.__index = self;
return o;
end function Base:Common()
print("Base common function");
end function hello()
print("hello");
end
require("base");

hello();

b = Base:new(nil);

b.Common();

Lua8 = Base:new(nil);

function Lua8:new(o)
o = o or {};
setmetatable(o, self);
self.__index = self;
return o;
end function Lua8:Common()
print("重写Base的Common方法");
end l = Lua8:new(nil);
l:Common();
Student = {};
Student.__index = Student; function Student:new(name, age)
local temp = {};
setmetatable(temp, Student);
self.name = name;
self.age = age;
return temp;
end function Student:info()
print("name:" .. self.name .. " age:" .. self.age);
end stu = Student:new("zhangsan", );
stu:info(stu);
Student = {};

function Student:new(o, name, age)
o = o or {};
setmetatable(o, self);
self.__index = self;
self.name = name;
self.age = age;
return o;
end function Student:info()
print("name:" .. self.name .. " age:" .. self.age);
end stu = Student:new(nil, "zhangsan", );
stu:info(stu);

LUA对象的更多相关文章

  1. 传Lua对象到Cpp

    传Lua对象到Cpp (金庆的专栏) 摘自:http://raycast.net/lua-intf 以下代码演示了Lua函数和表传入Cpp进行处理: std::string acceptStuff(L ...

  2. xlua中lua对象到c#对象的转型

    lua中的类型 基础类型 #define LUA_TNIL 0 #define LUA_TBOOLEAN 1 #define LUA_TLIGHTUSERDATA 2 #define LUA_TNUM ...

  3. 开源基于lua gc管理c++对象的cocos2dx lua绑定方案

    cocos2dx目前lua对应的c++对象的生命周期管理,是基于c++析构函数的,也就是生命周期可能存在不一致,比如c++对象已经释放,而lua对象还存在,如果这时候再使用,会有宕机的风险,为此我开发 ...

  4. Lua 之面向对象编程

    Lua 之面向对象编程 Lua并不是为面向对象而设计的一种语言,因此,仅从原生态语法上并不直接支持面向对象编程,但Lua的设计中仍然包含了很多面向对象的思想,理解它们也更有助于理解Lua自身的一些高级 ...

  5. Lua 之数据结构

    Lua 之数据结构 数组 通过整数下标访问的table中的元素,即是数组,下标默认从1开始. 一个创建二维数组的例子: mt = {} , do mt[i] = {} , do mt[i][j] = ...

  6. C++实现对lua访问的封装

    这是一个几年前写的对lua的访问封装,当时的项目仅提供了最基本的lua访问接口:调用lua函数,向lua注册标准格式的C++函数. 本来我想引进luabind,但luabind相对又过于复杂,并不是所 ...

  7. LUA表克隆方法归纳

    lua表克隆 将lua一个表, 克隆出一份为一个独立的另外一个表. 对于一个module, 如果在require之后,获得的表对象, 不能直接修改, 例如lua缓存此表, 但是多次逻辑执行, 都使用的 ...

  8. cocos2d-x lua绑定解析

    花了几天时间看了下cocos2d-x lua绑定那块,总算是基本搞明白了,下面分三部分解析lua绑定: 一.lua绑定主要用到的底层函数 lua绑定其本质就是有一个公用的lua_Stack来进行C和L ...

  9. Lua 5.1 参考手册

    Lua 5.1 参考手册 by Roberto Ierusalimschy, Luiz Henrique de Figueiredo, Waldemar Celes 云风 译 www.codingno ...

随机推荐

  1. 通过css使文字有渐变的效果

    <style> .color{ background-image: -webkit-gradient(linear, left center, right center, from(rgb ...

  2. Spring(二)之入门示例

    任何编程技术,特别是入门示例,通常都是Hello World,在这里我也遵循这个业界公认的原则. 这里我使用的maven项目,大家如果想要演示,建议使用Eclipse(含maven插件)或Idea(含 ...

  3. TCP连接三次握手协议,释放连接四次挥手,以及使用 awl伪造mac地址进行多线程syn洪泛攻击。

    这个TCP连接就是一次追女生-谈恋爱-分手,追求比分手简单,但是分手比追求复杂.哥,谈了半年的女朋友,在就快要成功了的时候分了,原因是因为有人在后面该老子背后搞SYN洪泛攻击,最后女朋友丢失了.学会T ...

  4. C++设计一个不能被继承的类

    1. 方法一 将构造函数和析构函数设置为私有函数,重新定义公有的静态函数来创建和释放类. #include "stdafx.h" #include <iostream> ...

  5. [Zedboard Linux系统移植]-从MACHINE_START開始

    改动自:http://www.cnblogs.com/lknlfy/archive/2012/05/06/2486479.html 内核的启动过程? 3)内核的启动过程? arch/arm/kerne ...

  6. 【CSS-移动端响应式布局详解】

    背景 移动端响应式布局开发主要方案有: 基于rem开发 基于媒体查询 基于弹性盒 基础概念 在讨论响应式布局知识前,先了解下移动端常用基础概念. 逻辑像素(CSS pixels) 浏览器使用的抽象单位 ...

  7. Java中的集合框架-Map

    前两篇<Java中的集合框架-Commection(一)>和<Java中的集合框架-Commection(二)>把集合框架中的Collection开发常用知识点作了一下记录,从 ...

  8. Autolayout中Hugging和Compression使用注意

    前言 本文主要侧重Autolayout使用过程中,通过代码和SB添加含有intrinsicSize属性控件约束的一些细节. 来自我的博客,欢迎访问:To Be Independent. Hugging ...

  9. Vue中,给当前元素添加类名移除兄弟元素类名的方法

    在Vue中,给当前元素添加类名移除兄弟元素类名的方法 今天在项目中需要做一个效果,点击对应的li改变当前的color,其他的li取消颜色,在jQuery中这很容易,由于之前已经引入了jQuery,所以 ...

  10. #leetcode刷题之路31-下一个排列

    实现获取下一个排列的函数,算法需要将给定数字序列重新排列成字典序中下一个更大的排列.如果不存在下一个更大的排列,则将数字重新排列成最小的排列(即升序排列).必须原地修改,只允许使用额外常数空间. 以下 ...