Java-黑蝙蝠  
          My name is mozart0
          外表澀苦但留醇香于舌尖
          online
          Adult Dating
          公告
          • 多一份自信,多一份成功!
            多看一本書,多一份機遇!
            多一次微笑,多一份快樂!
          日歷
          <2006年10月>
          24252627282930
          1234567
          891011121314
          15161718192021
          22232425262728
          2930311234
          統計
          • 隨筆 - 10
          • 文章 - 0
          • 評論 - 32
          • 引用 - 0

          導航

          常用鏈接

          留言簿(6)

          隨筆分類(10)

          隨筆檔案(10)

          相冊

          天氣預報

          常去論壇

          搜索

          •  

          積分與排名

          • 積分 - 38637
          • 排名 - 1192

          最新評論

          閱讀排行榜

          評論排行榜

           
          ?1 /*
          ?2 ?*?
          ?3 ????內部類的種類,可細分為四種:?
          ?4 ?1?類級別的?即用static修飾的內部類
          ?5 ?2?非static??不用static修飾的內部類
          ?6 ?3?寫在方面里面的內部類
          ?7 ?4?匿名內部類(常用在事件監聽里)
          ?8 ???下面我們通過例子來認識Inner?Class
          ???????????先介紹前2種 即1 和 2
          ???????? Author:blackbat
          ?9 ???2006-10-3?2:04
          10 ?*
          11 ? */

          12
          13 class ?ImOutClass {
          14 ????? private ? static ?String?staticAtt? = ? " 外部類的類變量 " ;
          15 ????? private ??String?instAtt? = ? " 外部類的實例變量 " ;
          16 ????
          17 ???? // ?private?static?String?xx?=?"外部靜態變量";????
          18 ???? // ?private??String?xx?=?"外部類的實例變量";
          19
          20 ???? // 外部類的非靜態方法
          21 ???? public ? void ?instanMethod() {
          22 ????????System.out.println( " 和外部類實例方法 " );
          23 ????}

          24
          25 ???? // 外部類的靜態方法
          26 ???? public ? static ? void ?staticMethod() {
          27 ????????System.out.println( " 和外部類靜態方法 " );
          28 ????}

          29
          30 ???? // 靜態內部類(static?Inner?Class)
          31 ???? public ? static ? class ??StaticInnerClass {
          32 ????????
          33 ???????? public ?StaticInnerClass() {
          34 ????????????System.out.println( " 我是靜態內部類 " );
          35 ????????}

          36
          37 ???????? public ? void ?access() {
          38 ????????????System.out.println( " 我可以訪問 " + staticAtt);
          39 ????????????staticMethod();
          40 ??????????? // TestIt.java:40:?non-static?method?instanMethod()?cannot?be?referenced?from?a?static?context
          41 ?????????? // instanMethod();
          42 ????????}

          43
          44 ????}

          45 ????
          46 ???? // 非靜態內部類(non-static?Inner?Class)
          47 ???? public ? class ?InstInnerClass {
          48 ????????
          49 ???????? public ? void ?InstInnerClass() {
          50 ????????????System.out.println( " 我是成員級內部類,非靜態內部類 " );
          51 ????????}

          52
          53 ???????? public ? void ?access() {
          54 ????????????System.out.println( " 我可以訪問 " + instAtt);
          55 ????????????instanMethod();
          56 ????????????staticMethod();
          57 ????????}

          58
          59 ????}

          60
          61 ?}
          		
          				
          下面是測試類,即如何訪問剛才所建立的內部類。

          ? public ? class ?TestIt {

          ?????
          public ? static ? void ?main(String?blackbat[]) {
          ?????????
          // 建立靜態內部類(static?Inner?Class)的對象
          ?????????ImOutClass.StaticInnerClass?staticIC? = ? new ?ImOutClass.StaticInnerClass();
          ?????????staticIC.access();

          ?????????
          /* ?建立非靜態內部類(non-static?Inner?Class)的對象
          ??????????*??注意這種建立對象的格式?首先創建外部類的對象
          ??????????*??然后使用對象.new?來創建。
          ??????????
          */

          ?????????ImOutClass??outC?
          = ? new ?ImOutClass();
          ?????????ImOutClass.InstInnerClass?inC
          = ?outC. new ?InstInnerClass();
          ?????????inC.access();
          ?????}


          ?}

          ?

          ??
          上面我們認識了前2中類型的內部類,下面我們來認識后2種類型的內部類。


          import?javax.swing.JFrame;
          import?java.awt.event.*;


          class??InnerClassTest2?extends?JFrame{

          ????
          public?static?void?main(String[]?args)?{
          ????????InnerClassTest2??out?
          =?new?InnerClassTest2();
          ????????Object?obj?
          =?out.inSomeMethod();
          ????????System.out.print(obj);
          //實際調用了obj.toString();

          ????????JFrame?frame?
          =?new?JFrame("Anonymous?Inner?Class?Example");
          ????????
          ????????
          //匿名內部類,注意其寫法。(Anonymous?Inner?Class)
          ????????frame.addWindowListener(new?WindowAdapter(){
          ????????????
          public?void?windowClosing(WindowEvent?e){
          ????????????????System.exit(
          0);
          ????????????}

          ????????}
          );//這里以分號結束。

          ????????frame.setVisible(
          true);
          ????????frame.setSize(
          200,300);
          ????}


          ????
          public?Object?inSomeMethod(){
          ????????
          ????????
          //方法里的內部類(Method?Inner?Class)
          ????????class?methodInnerClass{
          ????????????
          public?String?toString(){
          ????????????????
          return?"my?nickname?is?white";
          ????????????}

          ????????}


          ????????
          return?new?methodInnerClass();//返回該內部類對象
          ????}


          }



          最近正在備戰scjp,復習到內部類這章故整理一下,加深印象。:)
          ok?,?到此為止。?以上代碼?xp+jdk5.0測試通過。


          posted on 2006-10-04 02:04 黑蝙蝠 閱讀(868) 評論(1)  編輯  收藏 所屬分類: J2SE(基礎)
          評論:
          • # re: 搞定Inner Class(內部類)  久城 Posted @ 2006-10-12 14:13
            不錯,學習中...
            PS:寫在方法里的內部類主要需要注意,方法里的內部類不能訪問該方法中的局部變量,但能訪問外類的成員變量..  回復  更多評論   


          只有注冊用戶登錄后才能發表評論。


          網站導航:
          博客園   IT新聞   Chat2DB   C++博客   博問  
           
           
          Copyright © 黑蝙蝠 Powered by: 博客園 模板提供:滬江博客
          主站蜘蛛池模板: 大渡口区| 和林格尔县| 松桃| 德化县| 盐城市| 土默特左旗| 隆尧县| 山东省| 定日县| 镇远县| 岐山县| 湘乡市| 遂平县| 上栗县| 高碑店市| 凤山市| 洪江市| 鹰潭市| 舟曲县| 获嘉县| 博乐市| 茂名市| 都兰县| 东至县| 施甸县| 陵水| 文成县| 阳西县| 成都市| 剑阁县| 射阳县| 涡阳县| 绍兴市| 胶南市| 苍梧县| 双柏县| 汶上县| 沽源县| 宝兴县| 邹平县| 宣城市|