1.18.接口的定义和实现

1.18.1.问题
我想创建一个接口,并创建一个组件实现这个接口。
1.18.2.解决办法
创建一个ActionScript文件,申明此文件为一个接口,定义此接口需要的任意方法。要实现此接口,在定义类时使用implements关键字。
1.18.3.讨论
接口是一个很强大的工具,它描述一个契约,所有实现它的类都必须完全按照接口所定义的方法包括作用域,名称,参数和返回值保持一致。反过来使用此对象的组件希望这组方法已存在,这样只需要创建一个轻量级的类申明而不需要创建一个新类来破坏你的继承树关系。

实现接口的类也被认为是接口类型,这常被用来设置方法参数的类型或者方法的返回类型,例如:
+展开
-ActionScript
public function pay(payment:IPaymentType):IReceipt

这个方法接受实现IPaymentType接口的任何对象,以及返回实现IReceipt接口的对象。

接口中不能定义方法体以及任何变量,在下面的代码片段中,IDataInterface 申明和定义了5个方法,任何实现此接口的对象都必须定义这些方法:
+展开
-ActionScript
package oreilly.cookbook {
public interface IDataInterface {
function set dataType(value:Object):void ;
function get dataType():Object;
function update():Boolean; 
function write():Boolean;
function readData():Object;
}
}

要实现这个接口,申明类并添加implements标记到类申明中,所有接口中定义的方法都必须被实现。在下面的代码中,所有接口方法被包含进来并提供函数体:
+展开
-ActionScript
package oreilly.cookbook {
import flash.events.EventDispatcher;
import flash.events.IEventDispatcher;
public class ClientData extends EventDispatcher implements IDataInterface {
private var _dataType:Object;
public function ClientData(target:IEventDispatcher=null){
super (target);
}
public function set dataType(value:Object):void {
_dataType = value;
}
public function get dataType():Object {
return _dataType;
}
public function update():Boolean {
//do the actual updating
var updateSuccessful:Boolean; 
if (updateSuccessful) { return true ; }
else { return false ; }
}
public function write():Boolean {
var writeSuccess:Boolean;
if (writeSuccess) { return true ; }
else { return false ; }
}
public function readData():Object {
var data:Object;
//get all the data we need
return data;
}
}
}

如果在MXML中实现一个接口,在顶层的组件中使用implements,例如:
+展开
-XML
<mx:HBox xmlns:mx="http://www.adobe.com/2006/mxmlwidth="400height="300implements="IDataInterface">

加支付宝好友偷能量挖...


评论(0)网络
阅读(132)喜欢(0)flash/flex/fcs/AIR