首页 > 解决方案 > 为什么我们需要抽象方法?

问题描述

我最近一直在研究抽象方法,我不明白为什么我们需要它们?我的意思是,毕竟,我们只是在覆盖它们。你知道它只是一个声明吗?为什么我们需要它们?

另外,我尝试从互联网上理解这一点,到处都有解释,比如想象有一个抽象类人类,然后它的子类被禁用不是禁用,那么人类类中的抽象函数walking()将包含不同的主体或代码。现在我要说的是为什么我们不在禁用而不是禁用的子类中创建一个函数而不是覆盖。因此再次回到第一段中的问题。请解释一下。

标签: javainheritancemultiple-inheritance

解决方案


抽象方法最明显的用途之一是让抽象类从其他方法的实现中调用它们。

这是一个例子:

class AbstractToy {
    protected abstract String getName();
    protected abstract String getSize();
    public String getDescription() {
        return "This is a really "+getSize()+" "+getName();
    }
}
class ToyBear extends AbstractToy {
    protected override String getName() { return "bear"; }
    protected override String getSize() { return "big"; }
}
class ToyPenguin extends AbstractToy {
    protected override String getName() { return "penguin"; }
    protected override String getSize() { return "tiny"; }
}

请注意AbstractToy' 的实现如何getDescription能够调用getNameand getSize,即使定义在子类中。这是一个名为Template Method的著名设计模式的实例。


推荐阅读