抽象类是否会强制暴露实现细节,且兼具抽象与具体化特性?
抽象类的抽象性与具体化特性探讨
本文将抽象定义为「隐藏实现细节」。在研究Java的abstract关键字相关内容时,我发现用抽象类定义子类必须实现的功能,似乎和抽象的核心特性相悖——编写抽象类反而像是在暴露实现细节。
从实现类的视角来看,抽象类仅对以下两类方法做到了隐藏实现细节:
- 最终方法:
final public void finalMethod() - 已实现且未被重写的方法:
public void implementedMethod() // 假设不重写该方法
但对于抽象方法:abstract public void abstractMethod();
这种写法看似和抽象背道而驰,因为它强制子类必须实现该方法,相当于直接暴露了必须完成的实现细节要求。
抽象的对立面是什么?在软件工程领域的讨论中,有一种观点认为是具体化(concretization)。
由此提炼出核心问题:抽象类能否同时提供抽象性与具体化特性?从目前的表现来看,它似乎确实兼具这两种特性。
内容的提问来源于stack exchange,提问作者user18924622
相关产品推荐
相关产品推荐

