某朋友说java接口也是继承自Object..我瞬间反驳,接口只能继承接口,不能继承类,所以说接口继承自Object是错误的。
并举例interface A extends Object有编译错误。这时候他说,他的意思并不是可以直接写接口继承自Object, 他的意思是,JAVA内部,底层实现了接口继承自Object。
他的原话是,“所有类,包括接口,都是继承自Object”, 大家说说,这话对吗我本着好学的精神在这里问一下,真的是这样子么?我读的书不多,是不是他说错了我不知道?这里顺便吹一下别的。
依稀记得当年学JAVA有这么两句话,
1,接口也是类
2,所有类都继承自Object
本着数学逻辑思维原理,由上面两句话推出接口继承自Object,似乎这里又有点谬论了。

解决方案 »

  1.   

    只是听到的都是接口可以“理解为”特殊的类,实际上接口不是类,interface和class是同级的关系。
    Object 是所有类的父类。
    这样看来接口和Object没有直接关系的。
    从JAVA数据类型分类:
    1. 基本数据类型 
    不牵扯内存分配问题。一共分为八种,分别是byte、short、int、long、float、double、char、boolean。默认值如图所示:
    2. 引用数据类型 
    需要开发者为其分配空间。一共分为三种,分别是数组、类、接口。
    所以:interface和class是同级的关系
      

  2.   

    从语义上 interface 的确不能 extend Object,
    但是 interface 不是一个完整的类,要用到这个 interface,必须有一个 class 来实现 interface,而 class 的父类都是 Object。
    而且每个类、抽象类、接口等都有一个 Class 对象,Class 类的父类也是 Object。
      

  3.   


    我明白你说的。这个class对象只是接口自带的一个属性,所以可以说“接口也是类”,它根类一样有这样的属性。但是另一句话“接口跟类都继承Object”,这句话应该就是错误的。因为接口只能继承接口,不能继承类。Object是顶层的父类。象这样子,我可以定义无数多的Object在接口里面,但是改变不了接口不继承Object这个事实。
    public interface InterfaceA {
    String str = "string";
    public void func();
    }
      

  4.   


    看编译后的class文件的父类索引,接口继承了object类