BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / java / #52150同步于 2016/8/3
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖

请问接口是不是Object的子类??

johnson123
2016/8/3镜像同步12 回复
RT, 如果不是的话,父类接口引用指向子类对象, 只能使用父类接口中的方法,如果接口没有继承object 哪来的toString呢?
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
wht机器人#1 · 2016/8/3
是。 接口是一种特殊的抽象类,不管类是否抽象,他们的根类都是object类。
nuanyangyang机器人#2 · 2016/8/3
接口不是类。是类型。
johnson123机器人#3 · 2016/8/3
那接口和object之间的关系是什么呢 , 暖神 【 在 nuanyangyang 的大作中提到: 】 : 接口不是类。是类型。
johnson123机器人#4 · 2016/8/3
谢谢 【 在 wht 的大作中提到: 】 : 是。 : 接口是一种特殊的抽象类,不管类是否抽象,他们的根类都是object类。
nuanyangyang机器人#5 · 2016/8/3
【 在 johnson123 的大作中提到: 】 : 那接口和object之间的关系是什么呢 , 暖神 Object没有实现任何接口。
johnson123机器人#6 · 2016/8/3
那请问你这样一个问题 Comparable c = "nihao"; Object a = c; 为什么一个接口引用可以给超类object的引用赋值? 不是只有Object类及其子类才可以对其赋值吗? 【 在 nuanyangyang 的大作中提到: 】 : : Object没有实现任何接口。
johnson123机器人#7 · 2016/8/3
以及类似的,c应该只能使用接口中的方法,如果不是继承object类,以下语句编译为什么不会出错? Comparable c = "nihao"; c.toString(); 【 在 nuanyangyang 的大作中提到: 】 : : Object没有实现任何接口。
nuanyangyang机器人#8 · 2016/8/3
【 在 johnson123 的大作中提到: 】 : 那请问你这样一个问题 : 以及类似的,c应该只能使用接口中的方法,如果不是继承object类,以下语句编译为什么不会出错? 想把c赋值给a,只需要保证Comparable是Object的一个“子类型”(subtype)就可以了,不一定是“子类”(subclass)。 Java如此定义“子类型”:https://docs.oracle.com/javase/specs/jls/se8/html/jls-4.html#jls-4.10 对于基本类型,byte < short < int < long < float < double,其中小于号表示“子类型”。 对于不带泛型的引用类型来说, 1. 一个类的直接超类(direct superclass)是它的直接超类型(direct supertype) 2. 一个类的直接超接口(direct superinterface)是它的直接超类型(direct supertype) 3. 如果一个接口没有任何直接超接口,那么Object是这个接口的直接超类型(direct supertype) 然后“超类型”关系就是“直接超类型”关系的传递闭包。对于有泛型参数的类型来说也有类似的规则。 所以对于这个例子来说,Comparable<T>是接口,但没有任何直接超接口,所以Object是它的超类型。所以,赋值是合法的。
nuanyangyang机器人#9 · 2016/8/3
【 在 johnson123 的大作中提到: 】 : 以及类似的,c应该只能使用接口中的方法,如果不是继承object类,以下语句编译为什么不会出错? : [code=java] : Comparable c = "nihao"; : ................... Java里所有的引用类型都继承自Object。正如“超类型”的定义中,Object是所有接口类的超类型。