<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 :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

    java靜態方法的繼承

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

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

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

    如何調用父類的靜態私有方法?
    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?});//第一個參數必須為null
    ? ? ?
    return?((Boolean)?ret).booleanValue();
    ????}


    再來一個例子:

    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()方法有自己的實現(見上面代碼),則輸出"-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


    評論

    # re: java靜態方法的繼承  回復  更多評論   

    2012-10-03 10:57 by 李慶文
    synchronized ,不知道你的第一段代碼里加了這個關鍵是干嘛用的呢?好像沒什么用處。Thread.sleep的時候,是整個線程停止了那些時間,而且這里好像只有一個線程,就是main的這個線程。并不能說明父類的靜態方法沒被子類繼承。
    主站蜘蛛池模板: 亚洲人成7777影视在线观看| 性xxxx视频播放免费| 国产成人综合亚洲AV第一页| 福利片免费一区二区三区| 永久黄网站色视频免费| 亚洲精品无码久久久久YW| www.黄色免费网站| 亚洲一卡2卡3卡4卡国产网站| 国产精品成人免费福利| 亚洲伊人色一综合网| 五月婷婷综合免费| 亚洲日韩中文字幕天堂不卡| 在线观看成人免费视频不卡| 色婷五月综激情亚洲综合| 在线观看免费为成年视频| 狼人大香伊蕉国产WWW亚洲| 免费a级毛片无码av| 久久久久久av无码免费看大片| 亚洲精品无码乱码成人| 久久er国产精品免费观看2| 亚洲一区二区在线免费观看| 无遮免费网站在线入口| 亚洲国产精品成人午夜在线观看| 国产午夜无码视频免费网站| 国产视频精品免费视频| 亚洲精品线在线观看| 欧美日韩国产免费一区二区三区| 亚洲AV女人18毛片水真多| 亚洲精品无码日韩国产不卡?V | 国产.亚洲.欧洲在线| 毛片免费观看网址| 美女羞羞免费视频网站| 亚洲日韩欧洲无码av夜夜摸| 全部免费毛片在线播放| 亚洲精品女同中文字幕| 国产亚洲精品福利在线无卡一| 久久国产高潮流白浆免费观看| 亚洲欧美国产国产一区二区三区 | 国产麻豆成人传媒免费观看| 亚洲一区二区三区精品视频| 婷婷亚洲天堂影院|