Java中的接口和抽象类

Java中的接口和抽象类,java,interface,abstract-class,Java,Interface,Abstract Class,Java中的接口和抽象类是否扩展了基本对象类?我能想到的逻辑答案是否定的,但如果接口不扩展对象类,那么请有人向我解释以下代码: interface A { @Override public int hashCode(); @Override public String toString(); } 在上述情况下,接口是声明的新接口。然而,没有一个类实现它。那么,对象类中的方法如何在接口中可见呢 如果它不扩展对象类,那么为什么我不能在接口中声明以下方法: public Class

Java中的接口和抽象类是否扩展了基本对象类?我能想到的逻辑答案是否定的,但如果接口不扩展对象类,那么请有人向我解释以下代码:

interface A { 

@Override 
public int hashCode(); 

@Override 
public String toString(); 

} 
在上述情况下,接口是声明的新接口。然而,没有一个类实现它。那么,对象类中的方法如何在接口中可见呢

如果它不扩展对象类,那么为什么我不能在接口中声明以下方法:

public Class getClass();

当我试图在接口中声明这个方法时,它说它不能重写这个从对象类继承的方法,因为它被声明为对象类中的最终方法

接口只能扩展一些其他接口,没有-没有一些根接口。抽象类和Java中的任何其他类一样,以对象作为其祖先,而它可能不是直接的父类


标记为final的方法无法在后续类中重写。由于您的类将对象作为其祖先-此规则也适用于此处。

原因可在中找到

如果一个接口没有直接的超级接口,那么该接口隐式声明一个公共抽象成员方法m,其签名为s,返回类型为r,并抛出与每个公共实例方法m对应的子句t,该方法的签名为s,返回类型为r,抛出子句t在Object中声明,除非具有相同签名的方法,相同的返回类型,并且接口显式声明了一个兼容的throws子句

如果在对象中将m声明为final的情况下,接口显式声明这样的方法m,则这是编译时错误。

如图所示:

public final类getClass()
接口不继承自
对象
,但它们通过隐式添加来模仿可用的方法。同样,在这里,该基本接口中的
final
方法不能在自定义接口中重写

public final Class<?> getClass()