如果接口没有构造函数,那么接口的Object类超类是什么?

时间:2012-05-18 06:06:23

标签: java class interface super

我读到接口没有构造函数,这意味着它不会调用其超类的super()。我还读到Java中的每个类都是Object

的子类

接口怎么样,是Object的子类吗?为什么呢?

5 个答案:

答案 0 :(得分:5)

不,不是。接口无法实例化以形成对象,类。

答案 1 :(得分:1)

没有接口是Object类的子类,因为接口不能扩展类是隐式还是显式。

构造函数的原因是创建一个实例,因为接口无法实例化,因为它们不提供任何功能,它们只是一个契约,只有类可以实例化,因此它们具有构造函数。

答案 2 :(得分:1)

接口是方法定义的命名集合(没有实现)。接口还可以包含常量声明。

接口和类有一些基本的区别,其中一个是没有构造函数。实际上接口没有为它做,你不能实例化接口,但有办法你仍然可以实例化接口。

interface Interface{
     abstract String fun();
 }

Interface interfc=new Interface() {
    @Override
    public String fun() {
        return super.toString();
    }
};

Type type=interfc.getClass();

这里的接口已经被实例化为匿名类。但是你仍然不能根据java语言规范在这里放置构造函数。但是你仍然可以使用super类,这将是这个匿名类的超类。

An anonymous class cannot have an explicitly declared constructor.

还有另一种解决方法是在超类中使用最终变量。

答案 3 :(得分:0)

虽然有些人认为将界面视为“可以做”而不是“是一种”关系,但我认为将它们视为“__或”是“__”是更有帮助的。使用现实世界的比喻,书籍(死树版),装订纸质杂志,报纸,促销广告传单,标志和纸上写着一些文字,都是“可读的东西” ”。如果有人要向另一个人展示一本书并问“这是一个可读的东西”,答案就是它。另一方面,如果有人要向另一个人展示一本书并问“这是什么?”回应不是“一个可读的东西”,更可能是“一本书”,或者也许是“查尔斯狄更斯的第二部美国版小说”远大前程“的第五版精装本”。任何类型的“可读事物”都具有某种身份,而不仅仅是“可读的东西”。

与Java接口类似。对象可以实现任意数量的接口,但除了它支持的接口集之外,每个对象还必须具有一个类型。请注意,可以定义一个方法,该方法将返回实现接口的未知类型的新对象;这相当于向某人询问“请给我一些东西来阅读”而不指定所需的对象类型。这种方法可以选择要返回的对象类型,并为调用者提供“可读”的对象。但是,与一般方法不同,构造函数要求调用者精确指定所需的对象类型。仅仅指定一个对象是“可读的”就不够了。

答案 4 :(得分:0)

没有接口不能有构造函数。因为接口支持多重继承。这意味着如果一个类继承了两个接口,那么由于构造函数链接,将会产生歧义,构造函数将从类构造函数中调用。