根据我对Java的一些书籍的理解,接口不能 扩展课程。
但是所有接口都从Object类继承方法。为什么是这样 所以?
如果Interface不从Object类扩展。那么这段代码是如何工作的呢?
interface A
{
public boolean equals(Object o);
}
class InterfaceAndObjectClass
{
public static void main(String[] args)
{
A a = null;
a.equals(null);
a.hashCode();
a.toString();
}
}
请帮我解释如何访问Interface中的Object类方法。
答案 0 :(得分:6)
接口隐式包含Object
类的所有方法。由于任何实现该接口的类都是Object
的子类,因此它包含所有这些方法的实现。
如果接口没有直接的超接口,那么接口隐式声明一个公共抽象成员方法m,其中包含签名s,返回类型r和throws子句t,对应于具有签名s的每个公共实例方法m,返回类型为r, throws在Object中声明的子句t,除非接口显式声明具有相同签名,相同返回类型和兼容throws子句的抽象方法。
答案 1 :(得分:1)
如果声明相同的(抽象)方法(具有相同的名称签名,返回类型和throws类型,编译器会将其视为重写(它的确定),但如果使用不同的返回类型或不同的throws类型编译器将声明强迫你保持相同(兼容)的返回类型或抛出条款。
尝试在界面中声明以下equals方法。
public int equals(Object obj);
//它会显示编译时错误返回类型//不兼容。 (它应该是布尔值而不是int)