首先,先来一段在lua创建一个类与对象的代码 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 Class = {} Class.__index = Class   function Class:new(x,y)     local temp = {}     setmetatable(temp, Class)     temp.x = x     temp.y = y     return temp end   function Class:tes…
首先,先来一段在lua创建一个类与对象的代码 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 Class = {} Class.__index = Class   function Class:new(x,y)     local temp = {}     setmetatable(temp, Class)     temp.x = x     temp.y = y     return temp end   function Class:tes…
1.初学者最易混乱Top1——调用函数时用点号还是用冒号? 我们来看看下面的两句代码: mSprite.setPosition(, ); mSprite:setPosition(, ); 对于初次接触Lua的朋友来说,这简直就是噩梦,为嘛函数的调用有两种形式,是让我们随便挑的意思吗? 这两种形式是有区别的,区别很大,但只有一个.不过,暂时不解释,后面再介绍. 2.最简单的类 我们先来看看简单的,来创建一个“类”试试,如下代码: TSprite = { x = , y = , } function…
转载自: http://blog.csdn.net/wangbin_jxust/article/details/12170233 lua编程中,经常遇到函数的定义和调用,有时候用点号调用,有时候用冒号调用,这里简单的说明一下原理. girl = {money = 200} function girl.goToMarket(girl ,someMoney) girl.money = girl.money - someMoney end girl.goToMarket(girl ,100) prin…
这篇文章主要介绍了PHP面向对象编程之深入理解方法重载与方法覆盖(多态)的相关资料,需要的朋友可以参考下: 什么是多态? 多态(Polymorphism)按字面的意思就是"多种状态".在面向对象语言中,接口的多种不同的实现方式即为多态.引用Charlie Calverts对多态的描述--多态性是允许你将父对象设置成为和一个或更多的他的子对象相等的技术,赋值之后,父对象就可以根据当前赋值给它的子对象的特性以不同的方式运作(摘自"Delphi4编程技术内幕").简单的说…
介绍 在本篇文章,我们考虑在ECMAScript中的面向对象编程的各个方面(虽然以前在许多文章中已经讨论过这个话题).我们将更多地从理论方面看这些问题. 特别是,我们会考虑对象的创建算法,对象(包括基本关系 - 继承)之间的关系是如何,也可以在讨论中使用(我希望将消除之前对于JavaScript中OOP的一些概念歧义). 英文原文:http://dmitrysoshnikov.com/ecmascript/chapter-7-1-oop-general-theory/ 概论.范式与思想 在进行E…
面向对象编程之继承 继承的定义:是一种新建类的方式,新建的类称之为子类或派生类,被继承的父类称之为基类或超类 继承的作用:子类会""遗传"父类的属性,从而解决代码重用问题.也就是减少代码的冗余 继承的实现 继承描述的是子类与父类之间的关系,是一种什么是什么的关系.要找出这种关系,得先抽象,再继承.抽象即抽取类似或者说比较像的部分.分为以下两个方面: 抽取对象之间相似的部分,总结出类 抽取类之间相似的部分,总结出父类 语法:子类名(父类名) # 父类 class Animal:…
面向对象编程之封装 封装 定义:将属性和方法一股脑的封装到对象中,使对象可通过"对象."的方式获取或存储数据. 作用:让对象有了"."的机制,存取数据更加方便 # 定义类,调用类创建对象,这个过程可理解为封装 class Teacher: def __init__(self, name, age, gender): self.name = name self.age = age self.gender = gender def score(self): print(…
面向对象编程之反射 反射 定义:通过字符串对对象的属性和方法进行操作. 反射有4个方法,都是python内置的,分别是: hasattr(obj,name:str) 通过"字符串"判断对象的属性或方法是否存在.返回bool值,True表示有,False表示没有. 注意:查询方法时,只需写方法名,不要加小括号!!! class User: def __init__(self, name, age, gender): self.name = name self.age = age self…
面向对象编程之多态以及继承.抽象类和鸭子类型三种表现形式 多态 定义:同一种类型的事物,不同的形态 作用: 多态也称之为"多态性".用于在不知道对象具体类型的情况下,统一对象调用方法的规范(比如说名字) 表现形式:有3种,分别是继承.抽象类和鸭子类型 继承:耦合度高,程序的可扩展性低 实现 父类:定义一套统一的规范(比如:方法名统一) 子类:遵循父类的统一规范(比如:子类遵循父类方法名称的统一) 抽象类:耦合度极高,程序的可扩展性极低 由于在python中,继承并不会强制子类必须要遵循…
面向对象编程之组合 定义:一个对象中拥有另一个或其他多个对象的属性和方法. 作用:减少代码的冗余,降低耦合度 关于耦合度的说明 耦合:通俗地讲,就是相互作用,相互影响的意思 耦合度越高,程序的可扩展性越低: 耦合度越低,程序的可扩展性越高. 组合和继承的区别 组合:对象与对象之间的关系,可理解成"什么有什么"的关系 继承:类与类之间的关系,子类继承父类属性,是"从属"关系,即"什么是什么"的关系. class Course: "&quo…
冒号的作用:1.定义函数时,给函数添加隐藏的第一个参数 self2.调用函数时,默认把当前调用者作为第一个参数传递进去 如 a:b(c) 可以理解为 a.b(a, c) 以下是用点号的定义和调用函数的方式: Song = { name = "", timeLength = , } function Song.SetName(name) Song.name = name; end 以上的函数定义可以使可以,但是有一个很大的问题,思考10s为什么? 假如有以下逻辑: ChineseSong…
定义的时候冒号默认接收self参数调用的时候冒号默认传递调用者自己为参数而句号要显示传递或接收self参数 -- 例如:句号定义,需要显示传递或接收 a = { x = } function a.fun(self) print(self.x) end a.fun(a)--输出1,将a自己做为参数传给fun函数的self 这样调用要传递self,比较麻烦,所以lua给一个方便的方法将函数定义改成冒号,就可以省略self参数 function a:fun() print(self.x) end a.…
Student = {}; Student.__index = Student; function Student:new(name, age) local temp = {}; setmetatable(temp, Student); temp.name = name; temp.age = age; return temp; end function Student:info() print(self.name, self.age); --运行stu2时会报错 -- print("name:…
由于LUA中是模拟类,没有class, 所以这里是使用.号来访问实例的成员 re.SetActive(re, re.activeSelf == false); 而冒号:  则是种语法糖,省略了上面代码中的第一个参数 re:SetActive(re.activeSelf == false); 也就是说:lua中对象.方法,只能找到方法,对象只能是类型,即使传入的是对象,所以等效于确定了单纯的方法! 所以冒号的方法,模拟了对象访问自己方法的思想,但本质不是! 记住:lua没有面向对象!…
概述 1940年以前:面向机器 1940年以前:面向机器 最早的程序设计都是采用机器语言来编写的,直接使用二进制码来表示机器能够识别和执行的指令和数 据.简单来说,就是直接编写 和 的序列来代表程序语言.例如:使用 代表 加载(LOAD), 代表 存储(STORE)等. 机器语言由机器直接执行,速度快,但一个很明显的缺点就是:写起来实在是太困难了,一旦你发现自己写错了,改起来更蛋疼!这样直接导致程序编写效率十分低下,编写程序花费的时间往往是实际运行时间的几十倍或几百倍. 有一个关于机器语言和比尔…
面向对象概述 面向对象是一种符合人类思想习惯的编程思想.现实生活中存在各种形态不同的事物,这些事物之间存在着各种各样的联系,在程序中使用对象来映射现实中的事物,使用对象的关系来描述事物之间的联系,这种思想就是面向对象. 提到面向对象,自然会想到面向过程.面向过程就是分析解决问题所需的步骤,然后用函数把这些步骤一一实现,使用的时候一个一个一次调用就可以了. 面向对象则是把解决的问题按照一定的规则划分为多个独立的对象,然后通过调用对象的方法来解决问题.当然,一个应用程序会包含多个对象,通过多个对象的…
lua是扩展性非常良好的语言,虽然核心非常精简,但是用户可以依靠lua库来实现大部分工作.除此之外,lua还可以通过与C函数相互调用来扩展程序功能.在C中嵌入lua脚本既可以让用户在不重新编译代码的情况下修改lua代码更新程序,也可以给用户提供一个自由定制的接口,这种方法遵循了机制与策略分离的原则.在lua中调用C函数可以提高程序的运行效率.lua与C的相互调用在工程中相当实用,本文就来讲解lua与C相互调用的方法. Lua与C相互调用的首要问题是如何交换数据,lua API使用了一个抽象的栈与…
前言 面向对象三大基本特性:封装.继承.多态.上一篇中介绍了类的定义,下面就了解下F#中继承和多态的使用吧.…
前言 面向对象的思想已经非常成熟,而使用C#的程序员对面向对象也是非常熟悉,所以我就不对面向对象进行介绍了,在这篇文章中将只会介绍面向对象在F#中的使用. F#是支持面向对象的函数式编程语言,所以你用C#能做的,用F#也可以做,而且通常代码还会更为简洁.我们先看下面这个用C#定义的类,然后用F#来定义. //定义一个二维点 [DebuggerDisplay("({X}, {Y})")] public class Point2D { // 用于统计已实例化的数量 private stat…
下面的javascript代码都是需要使用jQuery插件来做的.希望大家可以搭建好工作环境 首先我们来做一个练习:在一个删除的超链接中添加一个提示信息,提示是否确认删除. 一般情况下我们都会这么做 <html> <head> <title>delete.html</title> </head> <script type="text/javascript"> function deleteTest(){ windo…
在进入javascript的面对对象之前,我们先来介绍一下javascript的几个概念. 1.javascript的面向对象的基本概念 function aa(){ } /* * 这里的aa,在我们以前看来他是一个函数,确实如此,但是从现在的角度来看 * aa不仅仅是一个函数,他还是一个对象.在javascript中,一切都是对象,函数也不例外 * 我们可以给对象的属性赋值,例如aa.b = 5,还可以获取对象的值,例如 * 这种赋值可以直接赋值,不需要声明,直接aa.属性=xxx,即可为aa…
一:Java的异常处理机制的优点: 1:把各种不同情况的异常情况分类,使用JAVA类来表示异常情况,这种类被称为异常类.把各种异常情况表示成异常类,可以充分的发挥类的可扩展性和可重用性. 2:异常流程的代码和正常流程的代码分离,提高了代码的可读性,简化了代码的结构. 3:可以灵活的处理异常,如果发生了异常程序员可以手动抛出异常,也可以交给调用者来处理异常. 二:Java虚拟机的方法调用栈 Java虚拟机用方法来调用栈来跟踪每个线程一系列的方法调用过程,该堆栈保存了每个调用方法的本地信息(比如说方…
php中构造方法是对象创建完成后第一个被对象自动调用的方法.在每个类中都有一个构造方法,如果没有显示地声明它,那么类中都会默认存在一个没有参数且内容为空的构造方法. 构造方法的作用 通常构造方法被用来执行一些有用的初始化任务,如对成员属性在创建对象时赋予初始值. 构造方法的在类中的声明格式 function __constrct([参数列表]){ 方法体//通常用来对成员属性进行初始化赋值 } 在类中声明构造方法需要注意的事项 1.在同一个类中只能声明一个构造方法,原因是,PHP不支持构造函数重…
最近在实习公司写代码,被隔壁的哥们吐槽说,代码写的没有一点艺术.为了让我的代码多点艺术,我就重新温故了<javascript高级程序设计>(其中几章),然后又看了<javascript设计模式>,然后觉得要写点心得体会,来整理自己所学的吧.以下是我个人见解,错了请轻喷,欢迎指出错误,乐于改正. 一.封装 (1)封装通俗的说,就是我有一些秘密不想让人知道,就通过私有化变量和私有化方法,这样外界就访问不到了.然后如果你有一些很想让大家知道的东西,你就可以通过this创建的属性看作是对象…
1.单对象克隆 <!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <title>singleClone</title>    <script type="text/javascript">    var clone = function(target,obj){        fo…
<!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <title>prototypeInherit</title>    <script type="text/javascript">    //原型式继承:实质上就是类式继承的函数封装(但有缺陷)    function inher…
<!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <title>groupInherit</title>    <script type="text/javascript">    //声明父类    function superClass(name){        this.n…
<!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <title>constructorfunctionInherit</title>    <script type="text/javascript">    //声明父类    function superClass(id){  …
<!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <title>classInherit</title>    <script type="text/javascript">    //声明父类    function superClass(){        this.name…