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

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

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

    java 多態產生的疑問

    對于標準的多態示例程序
    Class A {
    public void test(){
    System.out.println("A");
    }
    }
    Public Class B extends A{
    //@override 有無都不會報錯
    public void test(){
    System.out.println("B");
    }
    public static void main(String[] arguments){
        A a=new B();
        a.test();
    }
    }
    /*output:
    B
    *///:~
    這個程序很好的示意了向上轉型后A對B實例的test的調用。
    然而并不是所有的類型的方法都能夠支持多態。對于是private的方法,我們應該格外注意。
     1

    package cn.edu.neu.deepweb407.gui;

    public class A {
    private  void test(){
     System.out.println("A");
    }

    public static void main(String[] arg1s) {
     A a=new B();
     a.test();
    }
    }
    class B extends A{
     public void test(){
      System.out.println("B");
     }
    }

    16/*output:
    17A
    18*/
    //:~
    這個結論是,a.test()調用的是A類的方法test。因為B中的test方法并不是覆蓋了A類的方法。因此,A調用的只是他自身的test方法。大家注意的是,盡量不要在子類中聲明和父類私有方法相同名稱的方法。

    posted on 2012-07-10 17:27 scorpio小蝎 閱讀(406) 評論(7)  編輯  收藏

    評論

    # re: java 多態產生的疑問 2012-07-11 09:06 rubyliu12

    你這個也太扯淡了吧
    你代碼里B有繼承A嗎?沒繼承的話A a=new B();這樣編譯能通過?
    最后A類是私有的test的方法的話
    A a=new B();
    a.test();可以這么寫?不知道樓主是這么編譯和運行及得出的結論。看樓主的其他文章感覺也不是剛出道的菜鳥啊。
      回復  更多評論   

    # re: java 多態產生的疑問 2012-07-11 09:43 scorpio小蝎

    @rubyliu12
    謝謝指正,代碼貼錯了,已修改。   回復  更多評論   

    # re: java 多態產生的疑問 2012-07-11 09:56 scorpio小蝎

    @rubyliu12
    A類中 private test() 的方法由于main方法是在A類中 所以可以調用。這只是個demo。其實際意義是,如果A類中public方法調用了A類的private方法,而由于子類重寫了A類的private方法,將會出現如題所述的問題。有問題歡迎指教   回復  更多評論   

    # re: java 多態產生的疑問 2012-07-11 09:59 scorpio小蝎

    class A {
    private void test(){
    System.out.println("A");
    }
    public void get(){
    test();
    }
    }
    public class B extends A{
    //@override 不能有,因為private的方法被自動認為是final的且不能被訪問。
    public void test(){
    System.out.println("B");
    }

    public static void main(String[] args) {
    A a=new B();
    a.get();
    }
    }  回復  更多評論   

    # re: java 多態產生的疑問 2012-07-11 10:00 rubyliu12

    而由于子類重寫了A類的private方法?
    private的方法是私有的存在被子類重寫這樣的說話。  回復  更多評論   

    # re: java 多態產生的疑問 2012-07-11 10:08 scorpio小蝎

    @rubyliu12
    按照概念來講,不能叫做重寫,因該叫做子類新增了方法,但是形式上以及方法名是一模一樣的,很多新人都不會注意這點,為了區分才提出的。  回復  更多評論   

    # re: java 多態產生的疑問 2012-07-11 10:09 scorpio小蝎

    @rubyliu12 這句話里有提到,并不是真正意義的覆蓋“這個結論是,a.test()調用的是A類的方法test。因為B中的test方法并不是覆蓋了A類的方法。因此,A調用的只是他自身的test方法。大家注意的是,盡量不要在子類中聲明和父類私有方法相同名稱的方法。”不過你這個問題提的很不錯,這樣子大家看得更清楚了
      回復  更多評論   


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


    網站導航:
     
    <2012年7月>
    24252627282930
    1234567
    891011121314
    15161718192021
    22232425262728
    2930311234

    導航

    統計

    常用鏈接

    留言簿

    隨筆分類

    隨筆檔案

    友情鏈接

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 免费人成再在线观看网站| 亚洲一本之道高清乱码| 日本一区二区三区免费高清在线| 国产精品久久久久久久久久免费| 亚洲国产精品综合一区在线| 足恋玩丝袜脚视频免费网站| 亚洲精品资源在线| 久久国产免费福利永久| 亚洲综合精品成人| 国产又黄又爽又刺激的免费网址| 欧美亚洲国产SUV| 亚洲国产精品国产自在在线| 国产特黄一级一片免费| 一级做性色a爰片久久毛片免费| 又大又硬又爽免费视频| A毛片毛片看免费| 亚洲经典在线中文字幕| 好先生在线观看免费播放| 色偷偷噜噜噜亚洲男人| 亚洲人成色77777在线观看大| 成人性做爰aaa片免费看| 99久久亚洲精品无码毛片| 天天天欲色欲色WWW免费| 麻豆va在线精品免费播放 | 毛色毛片免费观看| 男人免费视频一区二区在线观看| 亚洲精品无码久久千人斩| 亚洲w码欧洲s码免费| 亚洲精品乱码久久久久久V| 国产乱辈通伦影片在线播放亚洲| 国产精品白浆在线观看免费| 亚洲免费视频播放| 亚洲精品网站在线观看不卡无广告| 久久久久免费视频| 亚洲一区二区三区高清视频| 亚洲国产精品成人网址天堂 | 一区二区三区视频免费观看| 亚洲精品国产成人99久久| 日本高清免费网站| 88xx成人永久免费观看| 特级av毛片免费观看|