- 浏览: 88146 次
- 性别:
- 来自: 北京
-
最新评论
-
A5121612886:
好文要顶!
Flash Builder 编译器选项 -
谁在哀伤望月:
非常好,谢谢分享
Flash builder4 插件终极破解方法
super它到底是什么?这是我第一个问题,在帮助中石这样说明的“调用方法或构造函数的超类或父版本。在类构造函数体内使用 super()
语句时,该语句将调用构造函数的超类版本。对超类构造函数的调用必须有正确的参数数目。请注意,不管是否显式调用超类函数,都会调用到超类构造函数。如果不是显式调用它,则将在子类构造函数体中的第一个语句前自动插入不带参数的调用。这意味着,如果在子类中定义了构造函数,并且超类构造函数具有一个或多个参数,则必须显式调用具有正确参数数目的超类构造函数,否则将产生错误。然而,根据 ActionScript 2.0 的要求,对超类构造函数的调用无需是子类构造函数中的第一个语句。”说了半天也是含糊其辞,我个人的理解就是super实际上是一个超类或父类的引用。我们可以把super看做是父类的一个实例。这样就好理解多了。但实际上它并非是父类的一个实例,我这样说只是方便理解。那么我们可以怎么去使用它呢?在帮助文档中提到了两种使用方法:
super([arg1, ..., argN]) super.method([arg1, ..., argN])
先来说说第二种,因为第二种比较好理解。我写了一个例子,大家来看一下就明白了!
package
{
/**
* ...
* @author A闪
*/
public class Flei
{
public function Flei()
{
}
public function shu():void
{
trace("a");
}
}
}
package
{
/**
* ...
* @author A闪
*/
public class Zlei extends Flei
{
public function Zlei()
{
}
public override function shu():void
{
super.shu();
trace("b");
}
}
}
package
{
import flash.display.Sprite;
import flash.events.Event;
/**
* ...
* @author A闪
*/
public class Main extends Sprite
{
public function Main():void
{
if (stage) init();
else addEventListener(Event.ADDED_TO_STAGE, init);
}
private function init(e:Event = null):void
{
removeEventListener(Event.ADDED_TO_STAGE, init);
// entry point
var a:Zlei = new Zlei();
a.shu();
}
}
}
运行这个程序,我们会看到输出ab。但是为什么会输出这个结果呢?实际上就是因为我们使用了super语句。再上面这个范例中,我们重写了了shu方法。如果重写的话,父类中的所有语句就等于被删除了!但是假如我们只希望在原来的功能上添加一些功能,怎么办呢?使用super,这样再调用一次父类的shu方法,原来的语句就被执行一次,相当于将原来的语句保留了。在此基础之上我们在添加一个新的语句。本例中就是trace("b");这个super的一种使用方法。
我们再来看另外一种使用方法。super()这个语句可以看做是父类的构造函数。什么意思呢?我们来简单的解释一下,一个父类,如果其构造函数不需要参数,那么好了!我们可以像上面那个例子中一样去使用。但是大家注意,在程序运行的时候,子类实际上是先执行一次父类的构造函数的。这个过程中,程序会自动的在子类的构造器函数中添加一个调用的语句。我们可以把它称为隐式调用。好了!现在我们将程序稍微修改一下,在Flei类文件的构造器函数中添加一个参数,代码如下:
package
{
/**
* ...
* @author A闪
*/
public class Flei
{
public function Flei(wen:String)
{
}
public function shu():void
{
trace("a");
}
}
}
我们可以看到,父类现在在初始化的时候需要一个参数,但是在子类中使用的是隐式调用,那么程序不会像父类的构造函数中传递任何参数,此时运行程序就会报错。怎么办呢?使用super(),这个语句就是调用一次父类的构造函数,写上这个语句和不写这个语句是一样的,写上了就是显示调用。那么写上之后有什么好处呢?好处就是我们可以为父类的构造函数添加参数了~!这样就可以解决上面的错误。
看一下实例!!我们只更改子类文件:
package
{
/**
* ...
* @author A闪
*/
public class Zlei extends Flei
{
public function Zlei()
{
super("A闪");
}
public override function shu():void
{
super.shu();
trace("b");
}
}
}
这样修改之后,大家再来运行一下影片,呵呵@!不报错了吧!super的使用就这两个,明白了就非常简单,不明白,就费劲了!不知道说的明不明白。大家有不明白的地方给我留言,我会一一解答的!~
最后总结一下,当父类的构造函数中需要参数,则在子类中构造函数中可能会出现super(参数...),这时候我们叫做显示调用。当父类的构造函数中没有参数的时候,可以不写super(),这个时候叫做隐式调用。另外,子类初始化的时候一定会先调用父类的构造函数(必须的)。
第二种用法就是把super当做一个变量,当做父类的应用,通过super.方法()或者super.属性,可以访问父类中的方法和属性。
发表评论
-
全面提升你的程序效率 之细说 bitmapdata AS3 Bitmap 抠图(透明部分)和碰撞(点击)检测
2012-06-05 09:54 7289如果你是刚接触as编程 ... -
AS3动态获得类名及类的方法
2012-05-08 13:50 28591.获得某个实例对象的类名:getQualifiedClass ... -
Flash Builder 编译器选项
2012-05-02 10:30 6481-benchmark 输出性 ... -
【AS3】为什么AS3.0事件流机制会有捕获阶段、目标阶段、冒泡阶段三个阶段
2012-04-26 10:03 3891原问题:事件机制有三个步骤,捕获,目标和冒泡。请问,在目标阶段 ... -
[AS3]事件流那点事儿
2012-04-26 09:36 1285在群里有人问了个问 ... -
Socket+AMF3粘包问题
2012-04-17 10:05 1920问题: 服务端Mina 前台接收Flex 参照的 ... -
AS3事件中target和currentTarget的区别
2012-04-12 15:40 1989在事件处理过程中,会 ... -
ActionScript垃圾回收
2012-04-12 15:04 1455在《给AS程序员的一点建议一文 》中我提到了释放资源的重 ... -
updateAfterEvent的作用
2012-04-10 17:26 1291flash中一共有三个类具 ... -
深入理解flash重绘
2012-04-10 17:21 1228Flash Player 会以SWF内 ... -
[AS3]registerClassAlias的用法
2012-03-20 10:35 1132registerClassAlias在利用AMF3进行序列话网 ... -
navigateToURL
2012-03-09 15:51 1216navigateToURL整理总结一些关于navigate ... -
flash中cacheAsBitmap的使用
2012-03-09 11:59 872缓存显示对象 如果 Flash 中的设计尺寸增大,无论创建 ... -
Debug和Release之本质区别
2012-02-27 11:41 1232关于Debug和Release之本质区别 使用条件编译来完成区 ... -
AS3.0的Dictionary类
2012-02-10 11:00 850AS3中的Dictionary类(flash. ... -
AS3中public internal private protected的区别
2012-02-10 10:43 2584protected Java與AS3中的 ... -
面试题目
2011-08-17 16:31 9081.as2与as3.的最主要区别 ... -
AS3事件类型
2011-05-18 09:54 1544Event事件类型: ACTIVATE 激活事件 ... -
关于强制类型转换
2011-05-09 09:59 798每一种编程语言都提供强制类型转换,允许你将某一种数据类型转换成 ... -
DisplayObjectContainer to MovieClip
2011-05-09 09:38 829package gameTool { import fl ...
相关推荐
2. **添加属性**:添加属性到JSON对象,可以使用`AsObject`或`AsArray`方法创建子对象或数组,然后使用`SetProp`方法设置属性。 ```delphi JSONObj.AsObject['propertyName'] := TSuperObject.Create.Value('...
在 Delphi 开发环境中,SuperObject 是一个广泛使用的 JSON 解析和序列化库,它提供了高效且易用的接口来处理 JSON 数据。然而,当涉及到处理包含中文字符的 JSON 对象时,由于 SuperObject 默认采用 UNICODE 编码,...
在本教程中,我们将深入探讨 SuperObject 的使用以及如何在 Delphi 11 应用程序中集成和操作 JSON 数据。 首先,我们需要了解 SuperObject 的基本概念。SuperObject 是一个开源的 Delphi JSON 解析器和生成器,它...
本篇文章将深入探讨SuperObject在DelphiXE8中的使用方法、核心功能以及实际应用场景。 一、SuperObject简介 SuperObject是用纯Delphi编写的一个JSON库,它支持Delphi 2009及以上版本,包括64位平台。其设计目标是...
X-SuperObject 是一个在 Delphi 开发环境中广泛使用的 JSON 库,特别适用于 Delphi 7 这样的较早版本。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,因其简洁、易读和易于机器解析而被广泛应用。...
3. **序列化JSON**:如果你需要将Delphi对象转换为JSON,可以调用TSuperObject的AsJSON方法,这将返回一个表示对象的JSON字符串。 4. **错误检查**:在解析和序列化过程中,记得检查可能的错误,确保数据正确无误。...
下面将详细讨论SuperObject在Delphi XE10.3中的使用、特性以及如何与JSON数据进行交互。 首先,SuperObject的核心优势在于其高度优化的C++和Pascal源代码,这使得它在处理JSON数据时具有出色的速度和内存效率。在...
本文详细介绍了AS3中类的基本概念、结构以及如何使用包、成员变量/常量、构造函数、继承与覆盖等关键特性。掌握这些基础知识对于编写高质量的AS3程序至关重要。希望本文能帮助读者更好地理解和运用AS3面向对象编程的...
在ActionScript 3 (AS3)中,自定义类是一种扩展和定制标准库中已有类或者创建全新功能的方法。在给定的标题“as3 自定义类”中,重点是自定义一个按钮类,这通常是为了满足特定项目或游戏的需求,提供更灵活的设计和...
这个库特别适用于那些需要在 Delphi 7 上运行且不能或不想使用更现代的 Delphi 版本中内置的 JSON 支持的项目。 1. **JSON 解析**: SuperObject 提供了 `OSuperObject` 类,用于解析 JSON 字符串为对象结构。你...
在Delphi编程环境中,SuperObject和SuperXMLParser是两个非常重要的库,主要用于处理JSON和XML数据格式。在本文中,我们将深入探讨这两个组件的功能、用途以及如何在Delphi7项目中使用它们。 首先,让我们来看看...
- **遍历 JSON 对象**:你可以使用 `AsObject` 和 `AsArray` 方法来访问 JSON 对象或数组的成员,以及 `Keys()` 来获取所有键。 3. **HTTP POST 发送 JSON 数据** - **创建 HTTP 客户端**:在 Delphi 中,可以...
本篇文章将深入探讨如何在Delphi XE10中使用SuperObject进行JSON解析。 首先,SuperObject的核心功能在于其提供了对JSON对象的动态访问,允许开发者以对象树的形式解析和构建JSON。它的API设计简洁,易于理解和使用...
通过以上讲解,我们了解了Flex+AS3项目渲染器的基本使用方法和重要性。实际开发中,可以根据具体需求灵活应用和扩展,以创造出丰富多样的用户界面。学习和掌握项目渲染器的使用,能极大地提升Flex应用的用户体验和...
《SuperObject:Delphi中的JSON处理利器》 在Delphi编程环境中,处理JSON数据是一项常见的任务,而SuperObject就是这样一个强大的工具,它为Delphi程序员提供了简洁高效的JSON解析和序列化功能。SuperObject源码的...
在Delphi编程环境中,为了方便地处理JSON数据,开发者通常会使用第三方库,如"superobject"。SuperObject是一个高效的、开源的JSON解析器和生成器,专为Delphi设计,提供了一种简洁的方式来解析JSON字符串或者构建...
- **解释**:此错误表示尝试在非实例方法中使用 `super` 关键字。`super` 关键字只能用于类实例方法或构造函数内部。 - **解决办法**:确认使用 `super` 的上下文是实例方法或构造函数。 #### 1007 super语句只能...
因此,当你在代码的 `uses` 部分添加 `superobject` 后,你就可以使用 SuperObject 库中的 `TSuperObject` 类,以及其他相关辅助类和方法,如 `Parse`, `AsObject`, `AsArray`, `Free`, `Clone` 等,它们可以帮助你...
之后,你可以在你的源代码中引入 `SuperObject` 单元,并开始使用其提供的类和方法。 以下是一些使用 SuperObject 的基本示例: 1. 创建 JSON 对象: ```delphi uses SuperObject; var JSON: ISuperObject; ...
对于JSON,可以使用JSON对象的parse方法将JSON字符串转换为AS3对象:var jsonString:String = '{"title":"Book1"}';var jsonObject:Object = JSON.parse(jsonString);trace(jsonObject.title);【外部接口与本地调用...