根据面向对象编程(OOP)接口不应继承Class。
由于Interface无法继承Class,那么java中接口引用的Object
类方法如何可用?
例如: -
public interface Test {
public void functionA();
}
class Child implements Test{
public void functionA() {
}
public static void main(String[] args) {
Test test = new Child();
test.toString(); // since toString is Objects class method, How it's visible for Test interface ref?
}
}
由于toString
是Object
的类方法,Test
接口参考如何显示?
答案 0 :(得分:6)
接口不从Java中的Object
类继承,并且所有接口都没有隐式继承的公共Object
(根)接口(正如所有类所做的那样)
接口有一个为Object中的每个公共方法声明的隐式方法。
参考Java语言规范9.2 Interface Members.
答案 1 :(得分:4)
指定每个接口类型以隐式声明所有公共Object
方法。这就是Java语言规范处理这种形式的方式。
9.2. Interface Members
...
- 如果接口没有直接的超接口,则接口隐式声明
public abstract
成员方法m
,其中包含签名s
,返回类型r
和{{1} }throws
对应于t
的每个公共实例方法m
,返回类型s
和r
throws
{}} 1}},除非接口显式声明具有相同签名,相同返回类型和兼容throws子句的抽象方法。
答案 2 :(得分:0)
您可能隐写的每个类都继承自bottomrightcontainer
。
因为接口(例如Object
)肯定会引用 某些对象(类似java.util.List
的类,ArrayList
或者LinkedList
接口的其他一些实现,Java让你使用List
的方法。