关于Flash中类的编写4

来源:互联网 发布:淘宝普吉岛包车 编辑:程序博客网 时间:2024/06/04 20:15
前面介绍编写类的三篇文章不知各位认为写得怎么样呢?今天我要为大家带来的是如何扩展内建类的能力的方法以及一些关于接口的相关知识。
其实,要想扩展内建类的能力就要用到类的继承特性。这也是必然的,只有继承了内建类的方法与属性后然后才能在原有的基础上增加新的功能。那么就先讲讲扩展内建类的基本思路吧。
1.首先要先选择要扩展功能的内建类(废话~~)。
2.从这个内建类中继承出来一个新的子类。
3.编写子类的新功能。
4.保存子类。
经过上面的四个步骤,我们就可以将一个内建类按照自己的想要的功能进行扩展了,是不是很容易呢?当然,对内建类扩展后,调用时就直接声明新子类的对象就可以了。至于如何声明类的对象,在上几编文章有讲,不懂的可以查看一下。下面我们通过一个例子来对上面所说的内容进行测试。
我在里选择扩展String类,新建一个外部脚本加入下面代码:
class subString extends String {
function test() {
   trace("这是一个经过扩展的String类");
}
function subString(){
}
}
上面的代码只是做为测试用,并没有实现任何功能;现在我们来调用一下。新建一个影片写下如下代码:
var demo:subString=new subString();
demo.test();//调用test方法

可见,如上面所说的那样,只要声明subString的对象就可以使用新功能了。当然,上面的例子是还不能使用string中的相关函数的。要想扩展一个类的功能,了解这个类的内部结构也是非常重要的,有兴趣的朋友可以自己去研究一下。
还有一个问题是需要大家注意的地方,那就是如果你扩展了Movie这个类。那么要调用这个类的时候就要从链接属性中钩选“为ActionScript导出”这个选项,再在AS2.0类的编辑框中写入你的类名就可以了。
说完了扩展类的功能这个内容后,我们进入下一个内容:接口。
所谓接口,就仅仅是一个声明方法的类。它是为ActionScript2.0的编程规范服务的,接口的真正意义在于既可以使程序开发符合ActionScript2.0的严格数据类型指定,又可以使用一个变量来保存从不同的类产生的对象。至于上面这句话的意思是什么呢?我会在下面讲的内容中让你逐步的理解到。
要创建一个接口我们要用到关键字interface。我们见下面的例子:
interface test{
    function print():Void;
    function getValue():Number;
}
从以上代码可以看出,接口只是对方法的一些声明,并没有实际实现的代码。这也正体现了它的真正意义之一。同时还要注意的是,接口只可以声明方法,不能声明属性的,而且它的文件扩展名也是.as,文件名也要和接口名相同,还有就是接口没有构造器函数。
学会了编写一个接口,那我们要学它另外的一个意义。就是实现接口类。
实现接口类是要让同一接口里面的方法在不同类中有不同的实现形式,同时也可以用这个接口的对象来保存实现它的接口类。要创建一个接口类,我们要用到关键字implements来指定类要实现哪个接口。我们来看下面的代码:
class demo implements test{
     var num:Number;
     function print():Void{
         //实现方法
     }
     function getValue():Number{
         //实现方法
         return 0;
     }
     function demo(){}
}
以上的类demo是要实现接口test的接口类。这样就可以实现接口类了,但是要注意,一个类要实现某个接口,它就必须对在那个接口中声明的所有方法都进行实现,不能只对个别方法进行实现。同时实现接口的类是可以有自己的属性和方法的(见上面的例子),还有就是要注意在实现该接口的类中方法要和接口的声明的方法保持一致。也就是说函数名、传递的参数还有返回值都要与接口中声明的方法保持一致。
那么如何用接口的对象来保存实现该接口的类呢?请看下面的例子:
为了能够清楚地反映这一点,我们再创建一个test接口的类。
class demo2 implements test{
    var aa:String;
        function print():Void{
         //实现方法
     }
     function getValue():Number{
         //实现方法
         return 0;
     }
     function demo2(){}
}
下面我们来声明这些类的对象
var t1:demo=new demo();
var t2:demo2=new demo2();
var myInterface:test;
myInterface=t1;//存放demo的对象
myInterface=t2;//存放demo2的对象
看见了吧,上面的例子就是用一个接口对象来存放两个不同的类对象。因为所有实现了同一个接口的类,其数据类型都是既属于各自的类,又同是属于这个接口的。
好了,今天就讲到这里吧,希望上面的文章对大家有所启发。
原创粉丝点击