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++

相关文章
相关标签/搜索