我真的有两个问题。我正在尝试了解继承的工作原理。
如果我有一个要继承的抽象类,并且它有一个没有标记为抽象的方法,这个方法是否还需要在子类中实现?
如果我有一个从另一个子类继承的子类,然后又从一个抽象类继承,那么最低的子类是否需要实现抽象类中的方法?还是因为方法已经在中间子类中实现了,就不需要再实现了?
谢谢!
我真的有两个问题。我正在尝试了解继承的工作原理。
如果我有一个要继承的抽象类,并且它有一个没有标记为抽象的方法,这个方法是否还需要在子类中实现?
如果我有一个从另一个子类继承的子类,然后又从一个抽象类继承,那么最低的子类是否需要实现抽象类中的方法?还是因为方法已经在中间子类中实现了,就不需要再实现了?
谢谢!
抽象类是声明为抽象的类。它可能包括也可能不包括抽象方法。抽象类不能被实例化,但它们可以被子类化。
抽象方法是在没有实现的情况下声明的方法(没有大括号,后跟分号),如下所示:
abstract void moveTo(double deltaX, double deltaY);
如果一个类包含抽象方法,则该类本身必须声明为抽象的,如下所示:
public abstract class GraphicObject {
// declare fields
// declare non-abstract methods
abstract void draw();
}
当抽象类被子类化时,子类通常为其父类中的所有抽象方法提供实现。但是,如果不是,则子类也必须声明为抽象的
A extends AbstractClass
则 A 必须实现了任何抽象方法或再次编译错误。如果它没有实现任何抽象类,那么 A 也必须是抽象的,并且实现抽象方法的责任落在 A 的子类上。任何不实现该方法的子类也必须声明为抽象,直到最终子类实现它。