请各位高手解答这个问题.
Interface是否继承Object,如果不是那下面这个方法为什么能编译通过呢?
public static void xxx(Collection c)
{
System.out.println(c.toString() + c.hashCode());
}
如果是,那下面这个方法为什么输出null呢?
Class cls = Class.forName("java.util.Collection");
System.out.println(cls.getSuperclass());
Interface是否继承Object,如果不是那下面这个方法为什么能编译通过呢?
public static void xxx(Collection c)
{
System.out.println(c.toString() + c.hashCode());
}
如果是,那下面这个方法为什么输出null呢?
Class cls = Class.forName("java.util.Collection");
System.out.println(cls.getSuperclass());
我先给你解释为什么第一段能编译通过
是因为你给一个Collection的引用,它肯定是指向某个类的
因为接口由类去实现的,也就是说只要这个引用存在,那么它就是一定是指向一个类的引用,既然是指向一类的引用,那以这个类肯定就是Object的子类,那么调用以上两个方法也就无可厚非了.
你要记住,把一个引用给一个接口时,这个引用一定是实现了这个接口的类.
后面就不用我解释了,因为它是一个顶级接口,所以它的父类为null,
interface不是类,interface往往用于规范类的功能,或者声明静态的变量。现在想想,二者的关系很有趣