什么必须从java中的抽象类实现?

时间:2013-06-07 01:43:25

标签: java inheritance abstract-class

我真的有两个问题。我试图了解继承的工作原理。

如果我有一个要继承的抽象类,并且它有一个未标记为abstract的方法,那么这个方法是否还需要在子类中实现?

如果我有一个继承自另一个子类的子类,然后继承自抽象类,那么最低的子类是否需要在抽象类中实现这些方法?或者因为这些方法已在中间子类中实现,所以不需要再次实现它们?

谢谢!

2 个答案:

答案 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)

  1. 如果方法不是抽象的,那么它已经实现了,当你继承抽象类的子类继承方法实现时,重新实现它将覆盖它。如果该方法被声明为abstract,则必须实现或获取编译时错误,如果子类也未声明为abstract。
  2. 如果从一个非抽象的类A extends AbstractClass继承,那么A必须实现任何抽象方法或再次编译错误。如果它没有实现任何抽象类,那么A也必须是抽象的,实现抽象方法的责任落在A的子类中。任何不实现该方法的子类都必须被声明为abstract,直到子类实现它为止。