java 中的interface是否繼承object

首先咱們從C++提及, c++能夠多繼承。也就是一個類型 --- class,能夠繼承自2個以上的父類型。多繼承致使一個問題,不少人知道。例如,若是類型B,類型C均繼承自類型A。而後類型D繼承自類型B和C。那麼構造D的實例的時候,因爲要調用父類型的構造方法,最終會調用兩次A的構造方法。結果類型D的實例有兩套祖父的數據,也就是外公和爺爺長的如出一轍,之後使用的時候很麻煩。每次D要和祖父打交道,都要額外的區分究竟是外公仍是爺爺。 再說,內存裏面出現兩套如出一轍的東西,一個用不上,還容易引發混亂,豈不是浪費,又麻煩。 
    因此,java就經過嚴格的單一繼承規則解決了這個問題。.net固然也同樣,單一集成是一個定律。那麼有: 
    全部的類型 --- 只能繼承自單一的類型; 
    其次,你們知道,從一個class派生的必然是另外一個class。Object是一個class,若是interface繼承自Object,那麼interface必然是一個class。那麼,若是一個類型實現了一個interface,再有一個基類class, 那麼它們的根源都是Object, 也便是這個類的實例也像c++同樣,存在上述的問題。 所以接口確定不是繼承自Object,不然就違反了單一繼承的定律。 

Java代碼   收藏代碼
  1. Set<String> result = new HashSet<String>();  
  2. for (Method m : Set.class.getMethods())  
  3.     result.add(m.getName());  
  4. System.out.println(result);  


打印結果爲:[iterator, toArray, addAll, remove, equals, containsAll, hashCode, contains, add, size, clear, isEmpty, retainAll, removeAll] 
確實不包含Object中的public類型方法,也證實了上述推斷。

 

上文是我在網上看到的一種解釋。java

疑問:萬物皆對象,JVM中彷佛提到接口和object是有關係的。   其實我以爲這個是sun當初在構建Java語法時候的「語法」問題,暫時理解他們二者之間存在一種「特別」的關係。c++

相關文章
相關標籤/搜索