先来看一段程序:
function create(name, id) local obj = { name = name, id = id } function obj:SetName(name) self.name = name end function obj:GetName() return self.name end function obj:SetId(id) self.id = id end function obj:GetId() return self.id end return obj endo1 = create("Sam", 001)
print("o1's name:", o1:GetName(), "o1's id:", o1:GetId())
o1:SetId(100) o1:SetName("Lucy")
print("o1's name:", o1:GetName(), "o1's id:", o1:GetId())
o1's name: Sam o1's id: 1 o1's name: Lucy o1's id: 100
对象工厂模式:
如前面代码的create函数
用表表示对象:
把对象的数据和方法都放进一张表内,虽然没有隐藏私有成员,但对于简单脚本来说可以完全接受
成员方法的定义:
function obj:method(a1,a2,…)…end --等价于 function obj.method(self,a1,a2,…)…end --等价于 obj.method=function(self,a1,a2,...)...end
obj:method(a1,a2,...) --等价于 obj.method(obj,a1,a2,...)
介绍 本章是关于ECMAScript面向对象实现的第2篇,第1篇我们讨论的是概论和CEMAScript的比较,如果你还没有读第1篇,在进行本章之前,我强烈建议你先读一下第1篇,因为本篇实在太长了(35页)。 英文原文:http://dmitrysoshnikov.com/ecmascript/chapter-7-2-oop-ecmascript-implementation/ 注:由于篇幅太长了,
本文向大家介绍Javascript简单实现面向对象编程继承实例代码,包括了Javascript简单实现面向对象编程继承实例代码的使用技巧和注意事项,需要的朋友参考一下 本文讲述了Javascript简单实现面向对象编程继承实例代码。分享给大家供大家参考,具体如下: 面向对象的语言必须具备四个基本特征: 1.封装能力(即允许将基本数据类型的变量或函数放到一个类里,形成类的成员或方法) 2.聚合能力(
目录表 简介 self 类 创建一个类 对象的方法 使用对象的方法 __init__方法 使用__init__方法 类与对象的变量 使用类与对象的变量 继承 使用继承 概括 简介 到目前为止,在我们的程序中,我们都是根据操作数据的函数或语句块来设计程序的。这被称为 面向过程的 编程。还有一种把数据和功能结合起来,用称为对象的东西包裹起来组织程序的方法。这种方法称为 面向对象的 编程理念。在大多数时
我们已经讨论了类与对象的功能部分,现在我们来看一下它的数据部分。事实上,它们只是与类和对象的名称空间 绑定 的普通变量,即这些名称只在这些类与对象的前提下有效。 有两种类型的 域 ——类的变量和对象的变量,它们根据是类还是对象 拥有 这个变量而区分。 类的变量 由一个类的所有对象(实例)共享使用。只有一个类变量的拷贝,所以当某个对象对类的变量做了改动的时候,这个改动会反映到所有其他的实例上。 对象
一个尽可能简单的类如下面这个例子所示。 创建一个类 例11.1 创建一个类 #!/usr/bin/python # Filename: simplestclass.py classPerson: pass# An empty block p = Person() printp (源文件:code/simplestclass.py) 输出 $ python simplestclass.py
本文向大家介绍js面向对象编程之如何实现方法重载,包括了js面向对象编程之如何实现方法重载的使用技巧和注意事项,需要的朋友参考一下 js中如何实现方法重载?这涉及到三个问题 1.同名函数的调用问题 2.函数中特殊的参数arguments 3.如何利用arguments实现方法重载 1、同名函数的调用问题 都知道在js中如果存在多个名称相同的函数,则调用实际每次都只使用最后一个,js其实是没有重载的