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