首页 > 代码库 > 使用Cocos Code Ide开发之:lua继承的理解

使用Cocos Code Ide开发之:lua继承的理解

边写边错,边错边改,边改变搜,再改,改出了些心得。可能会有错误,多包涵,接受批评。

 1 ---Base.lua 2  3 Base = {}                               4  5 Base.__index = Base 6 Base.value = http://www.mamicode.com/nil 7  8 function Base:new(_value) 9     local _t = {}10     setmetatable(_t, Base)11     _t.value = http://www.mamicode.com/_value12     return _t13 end
 1 ---Children.lua 2 require("Base") 3 Children = {} 4  5 setmetatable(Children, Base) 6 Children.__index = Children 7 Children.type = nil 8  9 function Childeren:new(_value,_type)10     local _c = Base:new(_value)11     setmetatable(_c, Children)12     _c.type = _type13     return _c14 end

Base.lua 是基类,Children.lua 是继承Base.lua的子类,可能大家习惯了C++,我转下

 1 --- .h 2  3 class Base 4 { 5      public: 6           void setValue(_value) 7           int value;                       8 } 9 10 --- .cpp11 Base::setValue(_value)12 {13      value =http://www.mamicode.com/ _value;14 }15 16 main()17 {18     Base* b = new Base();19     cout << b.value << endl;20 }

这里的 b 和 上面的 _t,我认为是一样的,都是一个对象,_t 是 table 类型的,

_t.value 就像 b.value.

setmetatable(Children,Base): 将 Childeren 的元表设置为 Base ,

setmetatable(_c, Children) : 将 _c 的元表设置为 Children,

举个例子吧:

_c : 儿子   Children :爸爸  Base : 爷爷

儿子 想买一个玩具,若 : 1. 自己有钱,直接买,获得到玩具

            2. 自己没钱,去搜索 爸爸 的裤兜,若有钱,获得到钱,买玩具

            3. 自己没钱,去搜索 爸爸 的裤兜,若没有钱,去搜索 爷爷 的裤兜,若有钱,获得到钱,买玩具, 若没钱, 两手空空,只能是 nil

类方法也是如此。

 

使用Cocos Code Ide开发之:lua继承的理解