亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊(cè) 查看新帖 |

Chinaunix

  平臺(tái) 論壇 博客 文庫(kù)
最近訪問(wèn)板塊 發(fā)新帖
查看: 2574 | 回復(fù): 0
打印 上一主題 下一主題

ActionScript 3 學(xué)習(xí)筆記(4)2010-01-28 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2010-01-28 14:44 |只看該作者 |倒序?yàn)g覽
* 使用命名空間限制符"::"
    如果一個(gè)命名空間定義在獨(dú)立的.as文件中,那么應(yīng)用這個(gè)命名空間時(shí),在類定義之前必須加上相關(guān)的use namespace的指令,否者沒(méi)有辦法在其他的類中使用命名空間的限定符來(lái)引用這個(gè)命名空間。
例如:
首先定義三個(gè)在獨(dú)立.as文件中的命名空間morning,noon,night.
package com.temp.namespace{
    public namespace morning;
}
package com.temp.namespace{
    public namespace noon;
}
package com.temp.namespace{
    public namespace noon;
}
定義一個(gè)應(yīng)用3個(gè)命名空間的Foo類;
package com.temp.namespace{
    import com.temp.namespace.*;
    use namespace morning;
    // use namespace noon;
    // use namespace night;
    public class Foo{
        morning function hello():void{
            trace("good morning!");
        }
        noon function hello():void{
            trace("Good noon!");
        }
        night function hello:void{
            trace("Good night!");
        }
        public function getName():Namespace{
            return night;
        }
    }
}
文檔類
package com.temp.namespace{
    import flash.display.Sprite;
    import com.temp.namespace.*;
    use namespace noon;
    public class SampleOuterNamespace(){
        var kk:Foo = new Foo();
        kk.hello(); //輸出 Good noon!,說(shuō)明noon空間打開成功
        
        kk.noon::hello();//可以注釋掉該行,否則會(huì)報(bào)錯(cuò)。找不到相關(guān)的方法
                         //說(shuō)明,即使在這里類中打開了noon空間
                         //也沒(méi)有辦法是用限定符來(lái)引用命名空間
                         //將Foo類中的use namespace noon;注釋去掉,則成功
     
        kk.morning::hello();//輸出Good morning!,執(zhí)行成功
                            //將Foo類中的use namespace morning;注釋,則報(bào)錯(cuò)
     
        var aaa:Namespace = kk.getName();
        kk.aaa::hello();//報(bào)錯(cuò):引用錯(cuò)誤
                        //在Foo類中將use namespace night;注釋掉,則成功
        
        //這說(shuō)明不在Foo類中用use namespace night;將night命名空間初始化,
        //用類方法返回的night命名空間也是沒(méi)有方法使用。
    }
}
* 在類內(nèi)用命名空間:
    如果這個(gè)命名空間是這個(gè)類 所獨(dú)有的,別的類中不需要應(yīng)用這個(gè)命名空間,那么就可以定義在類中。如果對(duì)類外部可見,可以使用private或者protected定義這個(gè)命名空間。如果這個(gè)命名空間需要被外部使用,那么類中必須通過(guò)某種方法將這個(gè)命名空間的應(yīng)用傳遞到外面,使用public(完全公開)或者internal(包內(nèi)公開)等訪問(wèn)控制來(lái)定義這個(gè)空間。
例如:
class Foo{
    public namespace good;
    private namespace bad;
    public function getName():Namespace{
        //return this.bad;
        //報(bào)錯(cuò);可見bad不是實(shí)例屬性

        //return Foo.bad;
        //這一行return Foo.bad卻可以執(zhí)行成功
        //可見實(shí)際上命名空間是一個(gè)靜態(tài)成員

        return bad;   //所以這里返回的實(shí)際上是Foo.bad;
    }
    good function hello():void{
        trace("Nice to meet you");
    }
    bad function hello():void{
        trace("who are you");
    }
}

package com.temp.namespace{
    import flash.display.Sprite;
    public class SampleInnerNamespace extends Sprite{
        public function SampleInnerNamespace(){
            var foo:Foo = new Foo();
            trace(Foo.good);
            //輸出:SampleInnerNamespace.as$0:Foo/good
            //這就可以看穿定義在類中namespace的性質(zhì)了,類似靜態(tài)成員
            var nameisStatic:Namespce = Foo.good;
            foo.nameisStatic:hello();

            //trace(Foo.bad);會(huì)報(bào)錯(cuò),私有命名空間不能訪問(wèn)
            //通過(guò)方法返回命名空間的引用,賦值給b
            var b:Namespace = foo.getName();
            foo.b::hello();
            //輸出Who are you
        }
    }
}
* public , private ,protected ,internal實(shí)質(zhì)上都是ActionScript 3中內(nèi)嵌的4個(gè)命名空間。
下面是需要注意的幾點(diǎn):
   1.不同的自定義命名空間中可有相同名字的成員,但是在4個(gè)命名空間中成員名字不能相同。這是ActionScript 3語(yǔ)法的限制,不可以有同名的public ,private ,protected,internal類成員。
   2.自定義命名空間可以被引用,但是這4個(gè)命名空間中不可以被引用,除了public看起開可以使用限定符(::)引用之外其余的都不可以,但實(shí)際上,public的這種使用方法和普通的自定義命名空間的引用還是有區(qū)別的。
   3.自定義命名空間可以使用use namespace 指令打開命名空間,但是這4個(gè)命名空間不可以,其中雖然public也可以使用 use namespace public,但是這樣的使用沒(méi)有太大的意義。
namespace custom
class Person{
    public function hi():void{
        trace("Public:hi()");
    }
    custom function hi():void{
        trace("custom:hi()");
    }
    private function hello():void{
        trace("public:hello()");
    }
    custom function hello():void{
        trace("custom:hello()");
    }
}


package com.temp.namespace{
    import flash.display.Sprite;
    public class SamplePrority extends Sprite{
        public function SamplePrority(){
           var person = new Person();
           use namespace custom;
           //person.hi();
           //報(bào)錯(cuò)了。hi()有歧義,找到多個(gè)匹配的綁定
           //trace(person as Namespace);
           
           person.public::hi();
           person.custom::hi();

           person.hello();//輸出 custom.hello();
           //正常訪問(wèn)到custom命名空間下的hello成員
           //private和protected成員當(dāng)然不會(huì)影響到自定義命名空間成員的訪問(wèn)
        }
    }
}
* 重寫父類方法的的幾個(gè)條件
   被關(guān)鍵字final定義過(guò)的實(shí)例方法不能被重寫,費(fèi)雷的private不能被重寫。
   必須用voerride關(guān)鍵字在行首標(biāo)明這是重寫。自類中被重寫的方法要和父類的方法有同樣的訪問(wèn)控制,同樣的參數(shù)數(shù)目,同樣的參數(shù)類型,同樣的返回值類型。

本文來(lái)自ChinaUnix博客,如果查看原文請(qǐng)點(diǎn):http://blog.chinaunix.net/u3/93876/showart_2163159.html
您需要登錄后才可以回帖 登錄 | 注冊(cè)

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號(hào)-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號(hào):11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專區(qū)
中國(guó)互聯(lián)網(wǎng)協(xié)會(huì)會(huì)員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過(guò)ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請(qǐng)注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP