<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://www.tkk7.com/jiangmin/articles/69386.html
    http://www.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)方法沒被子類繼承。
    主站蜘蛛池模板: 亚洲国产高清在线| 日韩精品免费在线视频| 免费一级毛片不卡不收费| 亚洲人成未满十八禁网站 | 天天看片天天爽_免费播放| 亚洲精品123区在线观看| 亚洲人成电影网站免费| 亚洲一区动漫卡通在线播放| 大学生一级毛片免费看| 天天爽亚洲中文字幕| 女人18毛片水真多免费看| 亚洲AV无码国产一区二区三区| 手机看片久久国产免费| 日本特黄特色AAA大片免费| 中文字幕亚洲激情| 国产成人1024精品免费| 国产精品亚洲A∨天堂不卡| 性xxxxx大片免费视频| 亚洲自偷自拍另类图片二区| 51视频精品全部免费最新| 亚洲另类自拍丝袜第1页| 手机在线毛片免费播放| 久久久久亚洲AV无码去区首| www.91亚洲| 国产亚洲精品免费视频播放| 国产亚洲色视频在线| 成在人线av无码免费高潮喷水| 亚洲欧洲日韩国产综合在线二区| 亚洲一级免费毛片| 亚洲色大成网站www尤物| 免费国产成人高清在线观看麻豆| 人妻免费久久久久久久了| 亚洲精品无码永久在线观看你懂的| 国产精品免费观看调教网| 亚洲成人黄色在线| 最近免费中文字幕大全视频| 羞羞漫画登录页面免费| 亚洲线精品一区二区三区| 91成人免费观看| 亚洲色偷精品一区二区三区| 亚洲精品麻豆av|