使用抽象方法有什么意义?

使用“抽象方法”有什么意义?抽象类不能实例化,但是抽象方法呢?他们只是在这里说“您必须实现我”,如果我们忘记了它们,编译器会抛出错误?

这还意味着其他吗?我还阅读了有关“我们不必重写相同的代码”的内容,但是在抽象类中,我们仅“声明”了抽象方法,因此我们将不得不在子类中重写代码。

您能帮我多了解一点吗?我检查了有关“抽象类/方法”的其他主题,但没有找到答案。

回答:

除了提醒您必须实现它之外,最大的好处是,任何按其抽象类类型(包括this抽象类本身)引用对象的人都可以使用该方法。

例如,假设我们有一个类负责获取状态并以某种方式对其进行操作。抽象类将负责获取输入,将其转换为long(例如)并以某种方式将该值与先前的值组合在一起-“某种方式”是抽象方法。抽象类可能类似于:

public abstract class StateAccumulator {

protected abstract long accumulate(long oldState, long newState);

public handleInput(SomeInputObject input) {

long inputLong = input.getLong();

state = accumulate(state, inputLong);

}

private long state = SOME_INITIAL_STATE;

}

现在,您可以定义一个累加累加器:

public class AdditionAccumulator extends StateAccumulator {

@Override

protected long accumulate(long oldState, long newState) {

return oldState + newState;

}

}

没有这种抽象方法,基类将无法说“以某种方式处理此状态”。但是,我们不想在基类中提供默认实现,因为这没有多大意义-

您如何为“其他人可以实现此目标”定义默认实现?

请注意,有多种方法可以给猫皮化。该策略模式将涉及声明声明的接口accumulate模式,并通过该接口的实例到不再视为抽象基类。用术语来说,这是使用合成而不是继承(您已经从两个对象(一个聚合器和一个加法器)中组成了一个加法聚合器。

以上是 使用抽象方法有什么意义? 的全部内容, 来源链接: utcz.com/qa/421384.html

回到顶部