麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 網(wǎng)站 > WEB開發(fā) > 正文

1.9.在ActionScript中設(shè)置變量的作用域

2024-04-29 18:53:26
字體:
供稿:網(wǎng)友
1.9.1.問題
我需要有些變量可公開訪問但有些防止被外部訪問。
1.9.2.解決辦法
使用ActionScript的作用域修飾符。
1.9.3.討論
無論是在ActionScript或在MXML文件中,變量都有各種作用域。組件中的私有變量和方法只可被其自身所訪問,其他組件都無法訪問。這樣的定義很有用,這些數(shù)據(jù)只能有一個(gè)組件可以修改。當(dāng)你設(shè)計(jì)一個(gè)復(fù)雜類時(shí),最好是把那些外部組件不需要的變量屬性設(shè)置為私有。

公共變量對(duì)任何對(duì)象都是可見的。應(yīng)仔細(xì)考慮哪些屬性是需要被外部訪問以及如何限制訪問這些屬性以便創(chuàng)建一個(gè)更好的類結(jié)構(gòu),要時(shí)刻提醒程序員注意這一特性的重要性。對(duì)于繼承類來說私有屬性也是不可見的,只有定義它的類或組件才可見。最后protected變量只被定義它的類及其繼承類所訪問。

標(biāo)記為私有的變量和函數(shù)只在定義它的類中可見,保護(hù)的在任何派生類中可見,如下面的例子使用了protected和private屬性:
+展開
-ActionScript
package oreilly.cookbook{
public class Transport {
protected var info:Object;
private var speed:Object;
}
}

通過使用extends關(guān)鍵字,你可以共享類屬性和方法給另一個(gè)類,在下面的例子中,Car類繼承自Transport類,并繼承了其非私有的所有屬性和方法。Car不能訪問Transport的私有屬性,否則會(huì)提示錯(cuò)誤信息"屬性沒有找到"。
+展開
-ActionScript
package oreilly.cookbook {
public class Car extends Transport {
public function set data(value:Object):void {
info = value;
speed = value.speed; /* this will throw an error because the speed
variable is private and access to it is not allowed to any other class */

}
}
}

Transport 類的protected屬性可用于Car類,但是不能用于把它作為一個(gè)屬性的其他類實(shí)例中。

兩個(gè)類的任何公共屬性都可以被其他類實(shí)例訪問。任何指定了static關(guān)鍵字的類都可以不用實(shí)例化而直接訪問其屬性,換句話說,static定義的變量是所有類實(shí)例所共享的。把下面這一行加入到Car類中。
+展開
-ActionScript
public static const NUMBER_OF_WHEELS:int = 4;

現(xiàn)在也直接訪問NUMBER_OF_WHEELS屬性而不用類實(shí)例化,例如:
+展開
-ActionScript
import oreilly.cookbook.Car;
public class CompositionTest {
private var car:Car;
public function CompositionTest() {
trace("a Car object has "+Car.NUMBER_OF_WHEELS+" wheels");
}
}

到目前為止,所講的變量作用域都是與類相關(guān)的,但是不僅僅是類屬性,我們還可以在函數(shù)內(nèi)創(chuàng)建或銷毀變量,函數(shù)內(nèi)的變量作用域只在函數(shù)體內(nèi)有效。例如:
+展開
-ActionScript
private function processSpeedData():void {
var speed:int;
var measurement:String = "kilometers";
}

在這個(gè)函數(shù)體外面,變量speed是毫無意義的,也就是說函數(shù)內(nèi)任何地方定義的變量其作用域都只能在函數(shù)體范圍內(nèi)。下面的代碼能正確輸出newCar對(duì)象:
+展開
-ActionScript
private function makeCars():void {
for (var i:int = 0; i<10; i++) {
var newCar:Car = new Car();
carArray.push(newCar);
}
trace(newCar);
}

newCar的引用在函數(shù)返回后便會(huì)失效。

ActionScript也支持final修飾符,指示編譯器該方法不能被修改了。這個(gè)修飾符可以使你定義的方法不被修改和覆蓋,例如,在Transport類中定義如下方法:
+展開
-ActionScript
public final function drive(speed:Number):void/* final and cannot be overriden in
any other class*/
 }

指示任何繼承Transport的類將擁有此方法,其public作用域說明可被任何對(duì)象所訪問,但是Transport子類無法重新定義它。
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 亚洲91精品 | 国产亚洲精品久久久久久久久久 | 欧美人与禽性xxxxx杂性 | 精品国产观看 | 99亚洲| 日本中文一级片 | 日本精品一二区 | 他也色在线视频 | 成人黄色网战 | 日本aaaa片毛片免费观蜜桃 | 精品国产一区二区三区四区阿崩 | 久久久久久久久久综合 | 久久艹逼| 久久精品视频网站 | 欧美精品在线免费观看 | 91美女福利视频 | av免费提供 | 国内成人自拍视频 | 黄色一级毛片免费看 | 国产免费一区二区三区网站免费 | 久久久久免费精品国产小说色大师 | 九九精品在线观看 | 亚洲精品有限 | chinese xxxx hd pron8 tube | 欧美无限资源 | 日韩精品久久久久久久九岛 | 牛牛热这里只有精品 | 国产在线精品一区二区不卡 | 日韩在线播放一区二区 | 日本aaaa片毛片免费观看视频 | 国产一级免费片 | 一级做a爱片毛片免费 | 久久久成人精品视频 | 国产欧美亚洲精品 | 久久久久久久91 | 成人在线视频网 | 久久久成人免费视频 | 黄色特级毛片 | 成人福利视频导航 | 免费黄网站在线播放 | 香蕉国产在线视频 |