欢迎来到天天文库
浏览记录
ID:5377454
大小:348.60 KB
页数:25页
时间:2017-12-08
《java se 6 技术手册投影片 - 第09章》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、第9章•管理類別檔案–內部類別–package與import成員內部類別、區域內部類別•成員內部類別,基本上是在一個類別中直接宣告另一個類別publicclassOuterClass{//內部類別privateclassInnerClass{//....}}•所產生的檔案名稱為「外部類別名稱$內部類別名稱.class」成員內部類別、區域內部類別•區域內部類別定義於一個方法中,類別的可視範圍與生成之物件僅止於該方法之中•內部類別還可以被宣告為"static“•由於是“static”,它不能存取外部類別的方法,而必須透過外部類別所生成的物件來進行呼叫成員內部類
2、別、區域內部類別•被宣告為static的內部類別,事實上也可以看作是另一種名稱空間的管理方式publicclassOuter{publicstaticclassInner{....}....}Outer.Innerinner=newOuter.Inner();匿名內部類別•內部匿名類別可以是繼承某個類別或是實作某個介面new[類別或介面()]{//實作}Objectobj=newObject(){publicStringtoString(){//重新定義toString()return"匿名類別物件";}};System.out.println(obj);
3、匿名內部類別•注意如果要在內部匿名類別中使用外部的區域變數,變數在宣告時必須為"final"....publicvoidsomeMethod(){finalintx=10;//宣告finalObjectobj=newObject(){publicStringtoString(){returnString.valueOf(x);//x可在匿名類別中使用}};System.out.println(obj);}....匿名內部類別•區域變數x並不是真正被拿來於內部匿名類別中使用•x會被匿名類別複製作為資料成員來使用•編譯器會要求您加上“final”關鍵字,這樣您
4、就知道不能在內部匿名類別中改變x的值•內部匿名類別在編譯完成之後會產生「外部類別名稱$編號.class」,編號為1、2、3...n,每個編號n的檔案對應於第n個匿名類別設定套件(package)•套件被設計與檔案系統結構相對應•為了要能建立與套件相對應的檔案系統結構,您在編譯時可以加入"-d"參數,並指定產生的類別檔案要儲存在哪一個目錄之下packageonlyfun.caterpillar;publicclassPackageDemo{publicstaticvoidmain(String[]args){System.out.println("Hello
5、!World!");}}設定套件(package)•javac-d.UsePackage.java•在目前的工作位置中會出現onlyfun目錄,之下會有個caterpillar目錄,而當中有個PackageDemo.class檔案•“package”的設定會成為類別名稱的一部份–完整類別名onlyfun.caterpillar.PackageDemo–javaonlyfun.caterpillar.PackageDemo設定套件(package)•「完全描述」(Fullyqualified)名稱–完整的指出「套件加類別」名稱onlyfun.caterpil
6、lar.Point2Dp1=newonlyfun.caterpillar.Point2D(10,20);•最後編譯完成的.class檔案必須放在onlyfun目錄的caterpillar目錄下badclassfile:.Point2D.classclassfilecontainswrongclass:onlyfun.caterpillar.Point2DPleaseremoveormakesureitappearsinthecorrectsubdirectoryoftheclasspath.Point2Dp1=newPoint2D(10,20);^1er
7、rorimport的意義•您可以使用"import"關鍵字,告知編譯器您所要使用的類別是位於哪一個套件importonlyfun.caterpillar.Point2D;publicclassPoint2DDemo2{publicstaticvoidmain(String[]args){Point2Dp1=newPoint2D(10,20);System.out.printf("p1:(x,y)=(%d,%d)%n",p1.getX(),p1.getY());}}import的意義•使用"import"指定時,可於套件指定加上'*'importonlyfu
8、n.caterpillar.*;publicclassPoint2
此文档下载收益归作者所有