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

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

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

    java 多態(tài)產(chǎn)生的疑問(wèn)

    對(duì)于標(biāo)準(zhǔn)的多態(tài)示例程序
    Class A {
    public void test(){
    System.out.println("A");
    }
    }
    Public Class B extends A{
    //@override 有無(wú)都不會(huì)報(bào)錯(cuò)
    public void test(){
    System.out.println("B");
    }
    public static void main(String[] arguments){
        A a=new B();
        a.test();
    }
    }
    /*output:
    B
    *///:~
    這個(gè)程序很好的示意了向上轉(zhuǎn)型后A對(duì)B實(shí)例的test的調(diào)用。
    然而并不是所有的類型的方法都能夠支持多態(tài)。對(duì)于是private的方法,我們應(yīng)該格外注意。
     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*/
    //:~
    這個(gè)結(jié)論是,a.test()調(diào)用的是A類的方法test。因?yàn)锽中的test方法并不是覆蓋了A類的方法。因此,A調(diào)用的只是他自身的test方法。大家注意的是,盡量不要在子類中聲明和父類私有方法相同名稱的方法。

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

    評(píng)論

    # re: java 多態(tài)產(chǎn)生的疑問(wèn) 2012-07-11 09:06 rubyliu12

    你這個(gè)也太扯淡了吧
    你代碼里B有繼承A嗎?沒(méi)繼承的話A a=new B();這樣編譯能通過(guò)?
    最后A類是私有的test的方法的話
    A a=new B();
    a.test();可以這么寫?不知道樓主是這么編譯和運(yùn)行及得出的結(jié)論??礃侵鞯钠渌恼赂杏X(jué)也不是剛出道的菜鳥啊。
      回復(fù)  更多評(píng)論   

    # re: java 多態(tài)產(chǎn)生的疑問(wèn) 2012-07-11 09:43 scorpio小蝎

    @rubyliu12
    謝謝指正,代碼貼錯(cuò)了,已修改。   回復(fù)  更多評(píng)論   

    # re: java 多態(tài)產(chǎn)生的疑問(wèn) 2012-07-11 09:56 scorpio小蝎

    @rubyliu12
    A類中 private test() 的方法由于main方法是在A類中 所以可以調(diào)用。這只是個(gè)demo。其實(shí)際意義是,如果A類中public方法調(diào)用了A類的private方法,而由于子類重寫了A類的private方法,將會(huì)出現(xiàn)如題所述的問(wèn)題。有問(wèn)題歡迎指教   回復(fù)  更多評(píng)論   

    # re: java 多態(tài)產(chǎn)生的疑問(wèn) 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 不能有,因?yàn)閜rivate的方法被自動(dòng)認(rèn)為是final的且不能被訪問(wèn)。
    public void test(){
    System.out.println("B");
    }

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

    # re: java 多態(tài)產(chǎn)生的疑問(wèn) 2012-07-11 10:00 rubyliu12

    而由于子類重寫了A類的private方法?
    private的方法是私有的存在被子類重寫這樣的說(shuō)話。  回復(fù)  更多評(píng)論   

    # re: java 多態(tài)產(chǎn)生的疑問(wèn) 2012-07-11 10:08 scorpio小蝎

    @rubyliu12
    按照概念來(lái)講,不能叫做重寫,因該叫做子類新增了方法,但是形式上以及方法名是一模一樣的,很多新人都不會(huì)注意這點(diǎn),為了區(qū)分才提出的。  回復(fù)  更多評(píng)論   

    # re: java 多態(tài)產(chǎn)生的疑問(wèn) 2012-07-11 10:09 scorpio小蝎

    @rubyliu12 這句話里有提到,并不是真正意義的覆蓋“這個(gè)結(jié)論是,a.test()調(diào)用的是A類的方法test。因?yàn)锽中的test方法并不是覆蓋了A類的方法。因此,A調(diào)用的只是他自身的test方法。大家注意的是,盡量不要在子類中聲明和父類私有方法相同名稱的方法?!辈贿^(guò)你這個(gè)問(wèn)題提的很不錯(cuò),這樣子大家看得更清楚了
      回復(fù)  更多評(píng)論   


    只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     
    <2012年7月>
    24252627282930
    1234567
    891011121314
    15161718192021
    22232425262728
    2930311234

    導(dǎo)航

    統(tǒng)計(jì)

    常用鏈接

    留言簿

    隨筆分類

    隨筆檔案

    友情鏈接

    搜索

    最新評(píng)論

    閱讀排行榜

    評(píng)論排行榜

    主站蜘蛛池模板: 四虎国产精品免费视| 久久久无码精品亚洲日韩按摩 | 亚洲中文字幕日产乱码高清app| 亚洲中文字幕久久精品无码A | 亚洲成a人片77777群色| 亚洲国产精品无码久久九九大片| 四虎精品视频在线永久免费观看| 女人让男人免费桶爽30分钟| 2020国产精品亚洲综合网| 一个人看www在线高清免费看| 亚洲 自拍 另类小说综合图区| 欧洲亚洲综合一区二区三区| 国产va在线观看免费| 免费国产真实迷j在线观看| 亚洲精品色在线网站| 亚洲国产日韩在线观频| 国产成人无码精品久久久免费| 激情综合色五月丁香六月亚洲| 免费无码作爱视频| 免费a在线观看播放| 无码AV动漫精品一区二区免费| 黄瓜视频高清在线看免费下载| 亚洲欧洲无码AV不卡在线| 国产在线播放免费| 亚洲一区二区三区不卡在线播放 | 日本免费网站在线观看| 特级毛片A级毛片100免费播放| 亚洲综合区小说区激情区| 2020久久精品亚洲热综合一本| 性做久久久久免费看| 久久久久久久国产免费看| 婷婷亚洲久悠悠色悠在线播放| 国产精品入口麻豆免费观看| 亚洲av成人一区二区三区在线播放| 亚洲国产婷婷香蕉久久久久久 | AV无码免费永久在线观看| 亚洲精品无码国产片| 国产自偷亚洲精品页65页| 日本h在线精品免费观看| 自拍偷自拍亚洲精品偷一| 亚洲国产一成人久久精品|