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

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

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

    MDA/MDD/TDD/DDD/DDDDDDD
    posts - 536, comments - 111, trackbacks - 0, articles - 0
      BlogJava :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

    java靜態(tài)方法的繼承

    Posted on 2009-07-16 23:12 leekiang 閱讀(2082) 評(píng)論(1)  編輯  收藏 所屬分類: java
    父類(Father)如果定義了一個(gè)靜態(tài)方法,如:
    protected synchronized static void echo(String str) throws Exception
    {? ???
    ? ????? System.out.println(str);
    ? ? ? ? Thread.sleep(10000);
    }
    Son和Daughter繼承了父類,在兩個(gè)線程里面相繼調(diào)用Son.echo();和Daughte.echo.會(huì)發(fā)現(xiàn)后調(diào)用的要等到先調(diào)用的完后才能調(diào)用,所以echo方法并不是真正的被子類繼承了,它們用的還是Father的方法。
    如果把靜態(tài)方法改稱非靜態(tài)的,用new出來的對(duì)象調(diào)用則不會(huì)出現(xiàn)上述情況。

    static方法不能被override,而不是不能繼承.

    如果Son類里有個(gè)同樣的echo方法,
    然后Father p= new Son();p.echo();此時(shí)實(shí)際調(diào)用的是Father的,注意這與非靜態(tài)方法不一樣。

    如何調(diào)用父類的靜態(tài)私有方法?
    private?static?boolean test(String?s) thows Exception
    ????{
    ????? Class?c?
    = Test.class;
    ????? Method?m;
    ????? Object?ret?
    =?null;
    ? ??? m?=?c.getDeclaredMethod("test", new?Class[]?{ String.class});
    ????? m.setAccessible(
    true);//必須加
    ????? ret?
    =?m.invoke(null,?new?Object[]?{ s?});//第一個(gè)參數(shù)必須為null
    ? ? ?
    return?((Boolean)?ret).booleanValue();
    ????}


    再來一個(gè)例子:

    public?class?Father?{
    ????
    private?static?String?n?=?"";
    ????
    public?static?void?name()?{
    ????????n?
    =?"father";
    ????}
    ????
    public?static?String?getN()?{
    ????????
    return?n;
    ????}
    }

    public?class?Son?extends?Father?{
    ????
    private?static?String?n?=?"";
    ????
    public?static?String?getN()?{
    ????????
    return?n;
    ????}
    ????
    public?static?void?name()?{
    ????????
    //Father.name();
    ????????n="son";
    ????}
    }

    public?class?TestStatic?{
    ????
    public?static?void?main(String[]?args)?{
    ????????Son.name();??
    ? ? ? ? System.out.println(Father.getN()
    +"-"+Son.getN());
    ????}
    }
    如果Son沒有name()方法或者name()方法里是"Father.name();",則輸出是"father-"
    如果Son的name()方法有自己的實(shí)現(xiàn)(見上面代碼),則輸出"-son"。


    參考:
    http://bbs.chinaunix.net/archiver/?tid-583540.html
    http://m.tkk7.com/jiangmin/articles/69386.html
    http://m.tkk7.com/forgood/archive/2009/01/11/250870.html


    評(píng)論

    # re: java靜態(tài)方法的繼承  回復(fù)  更多評(píng)論   

    2012-10-03 10:57 by 李慶文
    synchronized ,不知道你的第一段代碼里加了這個(gè)關(guān)鍵是干嘛用的呢?好像沒什么用處。Thread.sleep的時(shí)候,是整個(gè)線程停止了那些時(shí)間,而且這里好像只有一個(gè)線程,就是main的這個(gè)線程。并不能說明父類的靜態(tài)方法沒被子類繼承。
    主站蜘蛛池模板: 亚洲国产精品自在在线观看 | EEUSS影院WWW在线观看免费| 免费H网站在线观看的| 亚洲国产精品自在在线观看| 久久99国产综合精品免费| 亚洲制服中文字幕第一区| 亚洲精品中文字幕乱码三区 | 亚洲爆乳少妇无码激情| 在线观看免费视频网站色| 91视频国产免费| 亚洲国产精品免费观看| 德国女人一级毛片免费| 亚洲高清一区二区三区电影| 国产一级做a爱免费视频| 老湿机一区午夜精品免费福利 | 成人无码a级毛片免费| 亚洲精品私拍国产福利在线| 97碰公开在线观看免费视频| 亚洲线精品一区二区三区影音先锋| 中文字幕在线免费播放| 亚洲Aⅴ无码专区在线观看q| 每天更新的免费av片在线观看| 67194在线午夜亚洲| 99在线观看免费视频| 亚洲一级毛片在线播放| 免费看国产曰批40分钟| 国产精品免费一区二区三区| 亚洲日本一区二区| 成人人观看的免费毛片| 四虎影视久久久免费观看| 亚洲国产精品久久久久婷婷软件 | 日韩精品免费一级视频| 亚洲成a人片在线不卡一二三区| 亚洲国产成人久久一区WWW| 亚洲欧洲无卡二区视頻| 亚洲伊人久久成综合人影院| 5555在线播放免费播放| 国产亚洲精品美女久久久久| 久久久无码精品亚洲日韩蜜桃 | 成人女人A级毛片免费软件| 特级aaaaaaaaa毛片免费视频|