抽象意味着隐藏数据。我不明白抽象方法如何向用户隐藏任何数据。可以提出一个论点,即抽象方法不需要实现,而是在不向用户隐藏任何内容的类层次结构的宏伟方案中。抽象方法似乎只是强制实现,所以我不明白为什么它们是抽象的。
虽然抽象类和方法可以用于数据隐藏,但“抽象”并不意味着“隐藏数据”。在Java语言规范定义了这样的抽象类和方法:
抽象类是不完整的或被认为不完整的类。
抽象方法声明将方法作为成员引入,[...],但不提供实现(第 8.4.7 节)。不抽象的方法可以称为具体方法。
抽象类可用于数据隐藏。例如,java.awt.Toolkit是一个抽象类,但它的具体实现是私有的。要使用 Toolkit,您需要使用静态工厂方法获得一个实例getDefaultToolkit,该方法返回一个具体类的实例,但您不知道是哪一个。通过提供公共抽象 Toolkit 类,您可以使用该类提供的服务,但“数据”(具体实现)对您隐藏。