午夜拍鍵驚奇
          子夜 編程 代碼與我同在
          posts - 48,comments - 118,trackbacks - 79
          今天凌晨coding的時候發現一個很有趣的現象?!癘bject類是Java體系的單根父節點,所有Java類都從Object類繼承?!边@句話是大部分green hand都知道的Java金句,毋庸置疑。那如果我問你接口和Object類的關系呢?答案是“沒有關系”。請看下面的代碼:

          1Map map = new HashMap();
          2map.clone();

          Map是一個接口,HashMap是一個類。clone()方法在Object類中定義,因此我下意識認為第二行可以這么寫。結果編譯器報錯:clone()方法未定義。這個錯誤讓我很郁悶,看了半天doc才發祥原來Map是一個接口,而接口和Object類沒有任何關系,所以Map也就沒有繼承clone()。于是把代碼改成下面的樣子:

          1HashMap map = new HashMap();
          2map.clone();

          這樣就可以了。
          posted on 2005-08-19 13:53 ^ Mustang ^ 閱讀(2438) 評論(9)  編輯  收藏 所屬分類: Java 點滴

          FeedBack:
          # re: 接口與Object類的關系?
          2005-08-19 14:46 | 百年孤獨
          其實這本不應該是一個問題。

          “Object類是Java體系的單根父節點,所有Java類都從Object類繼承?!?

          這句話說的很清楚了。

          Map接口中并沒有申明過 Clone方法。所以第一段代碼當然會出錯。

          你應該好好理解“類繼承”和“接口實現”這兩個基本概念。  回復  更多評論
            
          # re: 接口與Object類的關系?
          2005-08-19 15:10 | 2002PP
          當然不能調用clone方法,因為Map接口并沒有定義。
          還有interface和類是不同的,interface只能繼承interface,而不能繼承任何類。
          所以其不可能繼承Object。  回復  更多評論
            
          # re: 接口與Object類的關系?
          2005-08-20 03:35 | I love java!
          暈,我也糊涂了  回復  更多評論
            
          # re: 接口與Object類的關系?
          2005-12-16 17:40 | 我的萬花@
          呵呵,看書可不能囫圇吞棗哦~  回復  更多評論
            
          # re: 接口與Object類的關系?
          2006-05-01 23:55 | benx4-darknese
          被騙了,什么驚奇嗎,很正常的事情,但是你的說法是錯的!clone方法在object中有聲名,但是是一個接口,沒有沒有實現的情況下怎么能能調用呢?clone方法的其實在沒有override的情況下只能拷貝基本數據類型,也就是淺拷貝。  回復  更多評論
            
          # re: 接口與Object類的關系?
          2006-06-06 22:38 | Glenn
          兄弟,你這樣是測試不出來的。java是絕對多態的。
          Map map = new HashMap();
          map.clone()調用相當于HashMap.clone()也就是說調用的是從HashMap中的clone方法。但是你沒有看清楚object的文檔,class要顯式implements Clonable接口才可以調用clone方法的  回復  更多評論
            
          # re: 接口與Object類的關系?[未登錄]
          2009-08-26 21:37 | allen
          靠你掉TOSTING()絕對可以。任何的類包括實現類都是其子類。。。CLONE是沒實現而已  回復  更多評論
            
          # re: 接口與Object類的關系?
          2009-08-27 12:33 | ^ Mustang ^
          @allen
          靠,4年前的文章還有人回復……  回復  更多評論
            
          # re: 接口與Object類的關系?[未登錄]
          2014-09-30 09:42 | KK
          因為Object的clone方法是protect的,你試試那些public方法(equals、toString....)。所有的接口都會聲明Object的public方法(大多數是隱式的)。  回復  更多評論
            
          主站蜘蛛池模板: 山阴县| 沂水县| 稻城县| 云浮市| 怀安县| 庄河市| 耒阳市| 岑巩县| 关岭| 安宁市| 和平县| 双桥区| 广德县| 西青区| 天峻县| 南雄市| 句容市| 慈溪市| 广河县| 曲阜市| 融水| 南通市| 河源市| 昌江| 孙吴县| 邵东县| 错那县| 基隆市| 长海县| 盘锦市| 鹤岗市| 安义县| 丰顺县| 恩施市| 惠水县| 民县| 巴彦淖尔市| 广昌县| 吕梁市| 图木舒克市| 邳州市|