http://bbs.9ria.com/thread-88099-1-1.html
定义类有密封类和动态类,我们平常定义的都是密封类,不能动态添加属性,而动态类可以。暂时没用到过。
我们新建一个动态类:
- package com.mode
- {
- public dynaimc class PersonDy//创建动态类;
- {
- public static var hand:String = "手";//定义一个静态属性;
- public var leg:String = "脚";//定义一个实例属性;
- public function PersonDy()
- {
- }
- }
- }
- package
- {
- import com.mode.PersonDy;//导入类;
-
- import flash.display.Sprite;
-
- public class Main extends Sprite
- {
- public function Main()
- {
- var person:PersonDy = new PersonDy();
- person.name = "小花";//PersonDy类里没有name属性,但是我们可以在这里添加;如果是密封类,则会报错; trace(person.name )//输出小花;
- }
- }
- }
--------------------------------
再来简单说说getter和setter方法;当一个类定义的属性是private(私有的),其他类不能访问,但是我又想访问这个属性的话,那要怎么办?
这个时候就要用到getter和setter方法了;
例子:
一个密码修改的东东,当密码修改3次,则自动锁定,不能再修改密码;
密码类:
- package com.mode
- {
- public class KeyHandler
- {
-
- private var _count:uint;//两个私有属性;
- private var _passWord:Number = 88888888888;
-
- public function KeyHandler()
- {
-
- }
- public function set passWord(pass:Number):void{
-
- if(_count< 3){//用setter方法,还可以限制访问次数;
- _passWord = pass;
- trace("密码设置成功,密码:" + _passWord);
- _count ++;
- }else{
- trace("密码修改次数超过3次,已锁定!");
- }
- }
-
- public function get passWord():Number{
- return _passWord;
- }
-
-
-
- package
- {
- import com.mode.KeyHandler;
-
- import flash.display.Sprite;
-
- public class Main extends Sprite
- {
- public function Main()
- {
- var key:KeyHandler = new KeyHandler();
- key.passWord = 11111111111111;//注意哦,访问不是key.passWord(),而是key.passWord;
- key.passWord = 22222222222;
- key.passWord = 9999999999;
- key.passWord = 4444444444;
- key.passWord = 66666666666;
- }
- }
- }
密码设置成功,密码:11111111111111
密码设置成功,密码:22222222222
密码设置成功,密码:9999999999
密码修改次数超过3次,已锁定!
密码修改次数超过3次,已锁定!
getter和setter一个写入,一个读出;
setter有且只有一个参数,并无返回值,
getter必须有返回值,但不能带参数;
=======================
定义passWord的set 和get 方法,调用的时候,用key.passWord 就会自动执行set 和get两个
package
{
/**
* ...
* @author wyr
*/
public class PassWord
{
private var _cout:uint =1;
private var _key:uint = 888888;
public function PassWord()
{
}
public function set passWord(key:uint):void {
if (_cout <= 3) {
_key = key;
_cout ++ ;
trace("密码设置成功过,新密码:" + _key);
}else {
trace("超过3次,以锁定!!");
}
}
public function get passWord():uint {
return _key ;
}
}
}
------------------------
package
{
import flash.display.Sprite;
/**
* ...
* @author wyr
*/
public class Main extends Sprite
{
private var keySet:PassWord = new PassWord();
public function Main()
{
keySet.passWord = 111111;
keySet.passWord = 222222;
keySet.passWord = 333333;
keySet.passWord = 444444;
}
}
}