public function MyClass(){ trace("这是写的第一个类"); } public function setSValue(value:Number):void{ s = value; } } } 这样通过一个公共方法(就是函数)设置了s的值,可以在FLA文件中调用:
myClass.setSValue(18);
当然跟其它语言一样,也可以用get和set方法来读取或写入private变量的值:
package net.smilecn{
public class MyClass{ public const PI:Number = 3.1415926; public var r:Number; private var s:Number; public function MyClass(){ trace("这是写的第一个类"); } public function set sValue(value:Number):void{ s = value; } public function get sValue():Number{ return s; } } } 在调用的时候就可以用这样的语句了:
myClass.sValue =18; //(当使用过set后可以这样操作)
var a = myClass.sValue; //(当使用过get后可以这样操作) 继承继承是指一种代码重用的形式,允许程序员基于现有类开发新类。现有类通常称为“基类”或“超类”,新类通常称为“子类”。首先看一段代码:
package net.smilecn{
import net.smilecn.MyClass;//类在使用之前要先导入 public class MySubClass extends MyClass{ public function MySubClass(){ trace("Pi:",PI);//正确 trace("r:",r);//正确 trace("s:",s);//错误 } } } 发现这个类比之前写的类多了“extends”这个一个关键字。这个关键字的作用就是说明,MySubClass类是继承MyClass类的,继承之后就可以使用MyClass这个类里的变量和方法了,这样就达到代码重用的目的。例如,现在要写关于若干个球的类,有足球、篮球、排球等,那么可以先找出这些的共性,先写一个球的类,然后再继承这个球的类写出若干个球的类。由于相同的东西写在球的类中了,这就达到了代码重用。 可以看出,PI,r,s是在MyClass这个类中定义的变量,那么由于MySubClass继承了MyClass,所以MySubClass也能使用这些变量。但值得注意的是,public和protected可以在子类中使用,而private则不行。所以这里PI和r可以使用,s不能用,并且子类在构造的时候也会执行基类的构造方法。改一下FLA文件的代码:
import net.smilecn.MySubClass;
var mySubClass:MySubClass = new MySubClass(); mySubClass.r = 3; 在输出面板会输出: 这是写的第一个类 PI:3.1415926 r:NaN 注意:标有错误的那句代码要去掉,不然会报错。 |