我们可以有一个具体的超类,然后是一个抽象的子类吗?有人可以解释一下它是如何工作的吗?
谢谢你
这已经发生在任何地方,因为所有类都直接或间接继承自Object
. 例如AbstractCollection
,一个抽象类继承自具体类Object
。
这没有什么特别的。抽象类的具体子类仍然必须实现抽象方法。
你可以拥有它是的。抽象类的唯一限制是:
继承时,必须实现抽象方法,或者继承的类也必须是抽象的。
无法实例化
由于抽象类可以实现方法,所以在抽象类中定义方法时可以使用非抽象超类的方法。此外,从抽象类继承的人从非抽象超类中获取方法,如下所示:
车辆继承抽象汽车继承法拉利
然后法拉利将获得车辆的实际实施方法。
是的,你可以,只要你不扩展这个类,你就不必实现任何方法。
Abstract class AbstractClass extends ConcreteClass{
public abstract void method();
}
class ConcreteClass {
public void doSomething(){
}
}
在 AbstractClass 中,您不必实现 doSomething 方法,而在 ConcreteClass 中,您不必实现 method()。如果您自己尝试会更好,我建议您阅读这本书 http://www.amazon.com/SCJP-Certified-Programmer-Java-310-065/dp/0071591060
谢谢,哈利勒。
你可以这样做,前提是你扩展的具体类不是最终的。和所有抽象类一样,它们不能被实例化。
例如,如果您希望您的继承者重新实现某些方法,则可以使用此示例……说:
public abstract class MustHaveEqualsAndHashCode()
{
@Override
public abstract int hashCode();
@Override
public abstract boolean equals(Object obj);
}
但是请注意,这种情况非常罕见。大多数时候,它可以有利地用合成代替。