<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Corsair

    My javaWorld
    數據加載中……

    2007年3月31日

    JAVA3D包功能介紹

         摘要: 包 簡介          ...  閱讀全文

    posted @ 2007-04-15 11:06 銀河海盜 閱讀(1705) | 評論 (3)編輯 收藏
    向上轉型中子類將能看到父類被覆蓋字段的現象探討

    我們知道,在子類繼承父類之后,如果子類與父類有同名的字段和方法,那么子類中的子段會代替或隱藏父類的子段,說明子類字段覆蓋了超類字段,但可以通過super關鍵字去訪問超類字段。但是,在我們將子類對象向超類轉型的時候就會發生這個奇怪的現象,子類對象居然可以看到父類曾經被覆蓋掉的字段!就正如下面例子中一樣:

    ?1?class?A{
    ?2?????boolean?bb?=false;
    ?3?}
    ?4?
    ?5?public?class?B?extends?A{
    ?6?????boolean?bb?=?true;
    ?7?????//int?a=1;
    ?8?????public?static?void?main(String[]?args)?{
    ?9?????????B?b?=new?B();
    10?????????A?a?;
    11?????????a=?b;
    12?????????//---??
    13?????????System.out.println(a.bb);
    14?????????//---這句可以理解
    15?????????System.out.println(b.bb);
    16?????????//---??
    17?????????System.out.println(?((A)b).bb);
    18?????????//----
    19?????}
    20?????/*運行結果
    21??????*?false
    22??????*?true
    23??????*?false
    24??????*?*/
    25?}

    為什么會發生這樣的情況呢?
    關于這種情況的解釋在[美]Peter van der Linden著的《Just Java2》中有了答案:
    P106他說:
    ???一定要注意:當把子類轉換成超類時,子類可以見到或訪問被隱藏的同名變量。Java允許名字重復的原因是,允許將來把新的字段加到超類中,而不影響已經使用了該名字的現有子類,子類將會繼續使用自己的字段副本。除非讓子類以超類對象的形式出現,方法可以覆蓋,但是字段不能被覆蓋。注意:最好不要隱藏超類中的字段名。
    ?????
    所以我們在進行向上轉型的時候一定要注意:不要訪問子類中那些“覆蓋”掉父類的字段(它并沒有真正覆蓋掉,在向上轉型的時候就可以訪問的到),要么將子類字段改名(在你知道父類代碼的情況下),要么通過方法來訪問字類字段(方法即使同名也肯定能覆蓋掉)。

    posted @ 2007-03-31 11:31 銀河海盜 閱讀(709) | 評論 (2)編輯 收藏
    繼承帶參數構造器的超類并且調用自身其他構造器的討論

    // 首先有一個帶參數的超類:?
    class ?SuperClass {?
    ???String?str
    = " create?superClass?obj " ;?
    ???SuperClass(
    int ?num) {?
    ???????System.out.println(num
    + str);?
    ???}
    ?
    }
    ?
    /*
    現在有一個子類繼承了這個超類,那么這個子類應該顯式的調用超類的構造函數,以便初始化自己的父類,如下。?
    */

    class ?SubClass? extends ?SuperClass {?
    ???SubClass(
    int ?num) {?
    ??????
    super (num);?
    ???}
    ?
    }
    ?
    /*
    現在子類還要定義一個新的構造函數,并且在前一個構造函數中調用這個新的構造函數,更改如下:?
    */

    class ?SubClass? extends ?SuperClass {?
    ???SubClass(
    int ?num) {?
    ??????
    super (num);?
    ??????
    this ( " other?SubClass(String) " );?
    ???}
    ?
    ???SubClass(String?s)
    {?
    ??????System.out.println(s);?
    ???}
    ?
    ???
    public ? static ? void ?main(String[]?args) {?
    ??????
    new ?SubClass();?
    ???}
    ?
    }
    ?
    /*
    由于我們知道在一個類中的構造函數中要調用自己的其他構造函數,只能通過this();的方式調用一個,并且要放在所在構造函數的第一行,但是使用super();顯式調用也父類帶參構造函數也只能放在第一行,那么這樣就會發生沖突。
    */
    // 參考:?
    public ? class ?SuperClass? {?
    String?str
    = " create?superClass?obj " ;??
    ?SuperClass(
    int ?num) {??
    ???????System.out.println(num
    + str);??
    ???}
    ??
    }
    ?
    public ? class ?SubClass? extends ?SuperClass? {?
    ???SubClass(
    int ?num) {??
    ??????
    super (num);??
    ??????sub(num,
    " other?Subclass(String) " );?
    ???}
    ??
    ???SubClass(
    int ?num,String?s) {??
    ??????
    super (num);?
    ??System.out.println(s);??
    ???}
    ?
    ???
    // -------------?
    ???SubClass?sub( int ?num,String?s) {?
    ???
    return ? new ?SubClass(num,s);?
    ???}
    ?
    ???
    public ? static ? void ?main(String[]?args) {??
    ??????
    new ?SubClass( 1 );?
    ???}
    ??
    }

    posted @ 2007-03-31 10:56 銀河海盜 閱讀(449) | 評論 (0)編輯 收藏
    關于名稱屏蔽討論

    關于超類方法重載,子類無法覆蓋其中的任意一個方法。

    public?class?SuperClass?{?
    public?void?method(){?
    System.out.println(
    "super?method()?worked.");?
    }
    ?
    public?void?method(int?a){?
    System.out.println(
    "super?method(int)?worked");?
    }
    ?
    public?void?method(String?s){?
    System.out.println(
    "super?method(string)?worked");?
    }
    ?
    }
    ?
    //------------sub---------------?
    public?class?SubClass?extends?SuperClass?{?
    ??
    public?void?method(){?
    ??System.out.println(
    "subclass?method()?worked");?
    ??}
    ?
    ??
    public?void?method(int?a){?
    ??
    super.method(a);?
    ??}
    ?
    ??
    public?void?method(char?c){?
    ??System.out.println(
    "subclass?method(char)?worked");?
    ??}
    ?
    }
    ?
    //------------run---------------?
    public?class?Test?{?
    public?static?void?run(SuperClass?a){?
    a.method();?
    a.method(
    1);?
    a.method(
    "string");?
    }
    ?
    public?static?void?main(String[]?args)?{?
    run(
    new?SubClass());?
    new?SubClass().method('r');?
    }
    ?
    }
    ?
    //=============END===============?
    subclass?method()?worked?
    super?method(int)?worked?
    super?method(string)?worked?
    subclass?method(
    char)?worked?
    //=============END===============?

    posted @ 2007-03-31 10:53 銀河海盜 閱讀(320) | 評論 (1)編輯 收藏
    主站蜘蛛池模板: 女人18毛片特级一级免费视频 | 性色午夜视频免费男人的天堂 | 国产精品V亚洲精品V日韩精品| 日本系列1页亚洲系列| 日韩精品成人无码专区免费 | 免费无码肉片在线观看| 亚洲一区中文字幕在线观看| 亚洲精品在线免费观看视频| 亚洲人成在久久综合网站| 黄网站色在线视频免费观看| 亚洲一区在线观看视频| 青青久在线视频免费观看| 亚洲GV天堂GV无码男同| 无码国产亚洲日韩国精品视频一区二区三区 | 久久久WWW免费人成精品| 亚洲中文字幕视频国产| 光棍天堂免费手机观看在线观看| 久久亚洲国产欧洲精品一| 在线人成精品免费视频| 亚洲AV无码乱码在线观看代蜜桃 | 无码高潮少妇毛多水多水免费| 亚洲性无码AV中文字幕| 国产jizzjizz免费看jizz| 巨胸喷奶水www永久免费| 亚洲AV综合色一区二区三区| 1a级毛片免费观看| 中国亚洲呦女专区| 国产亚洲综合一区柠檬导航| 亚洲高清不卡视频| 性盈盈影院免费视频观看在线一区| 老司机午夜在线视频免费| 日本亚洲视频在线| 成人AV免费网址在线观看| 免费福利资源站在线视频| 亚洲AV无码一区二区乱孑伦AS| 皇色在线视频免费网站| 一级做a爰片性色毛片免费网站| 久久精品夜色国产亚洲av| 操美女视频免费网站| 最近中文字幕大全免费版在线 | 91精品成人免费国产片|