使超类抽象是否可能有意义?

时间:2015-06-01 03:09:07

标签: java

我被告知:一个类可以扩展一个具体的超类,并覆盖一个实现的方法,使其成为抽象的。

如果方法变得抽象,那么相应的超类也应该变成抽象的。

这是对的吗?如果是这样,使超类或超类中的方法变为抽象是否有意义?

3 个答案:

答案 0 :(得分:0)

要包含抽象方法,类本身也必须声明为abstract。

可以使用抽象方法,其中行为特定于每个子类化对象。虽然这也可以通过接口实现,但您可能更喜欢使用抽象类,因为它们也可以包含已经实现的方法,或者您可能希望声明不是 static final <的字段/ em>的。请注意,当一个类变为抽象时,它就不能再被实例化了。

详细了解抽象类here

答案 1 :(得分:0)

如果你的类包含抽象方法,那么你是不是一个选择,它是必须的。您不能拥有具有抽象方法的非抽象类

你是否声明一个方法摘要或在你的超类中实现它归结为你的具体用例。是否存在对超类的所有可能的具体实现有意义的默认行为?然后你可能想要实现它。如果不是这样,请将其声明为摘要,让子类接管。

答案 2 :(得分:0)

  

我被告知:一个类可以扩展一个具体的超类,并覆盖一个已实现的方法,使其成为抽象的。

     

如果方法变得抽象,那么相应的超类也应该变成抽象的。

     

这是对的吗?

我认为这是不正确的。

以下面的代码为例。

public class Father {
    public void print() {
        System.out.println("Father");
    }
}

public abstract class Son extends Father {
    @Override
    public abstract void print(); /* no need to abstract the superclass */

    // and other abstract or concrete methods
}

public class Grandson extends Son {
    @Override
    public void print() {
        System.out.println("Grandson");
    }
}