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