我是一个对面向对象概念有很好理解的java开发人员(或者,我想是这样的).现在我正在学习设计模式(From Head first design patterns).
我一直在阅读有关OOPS概念抽象的内容,以便简单地理解它,并且阅读更多有关它的信息让我比以前更加困惑.
据我所知,抽象是指隐藏程序的内部细节,同时将接口暴露给其他程序员,而不必担心内部细节.
但是,我不明白
>抽象类如何适应这种抽象概念,抽象类要求我实现抽象方法,其中是抽象使用java中的抽象类.
>我觉得,抽象可以实现的一种方式是通过私有构造函数并要求类的用户使用工厂方法来获取可以实现和隐藏实现细节的类的对象.
如果我在任何地方都错了,请纠正我.
解决方法:
“摘要”是“具体”的反义词.通过抽象,您可以表达概念和想法,而不是实现这些想法的具体方式.这符合您对抽象的理解 – 您隐藏了详细信息而您只显示了界面.
但这也适用于抽象类 – 它们不是具体的(它们不能实例化它们),并且它们没有指定实现.它们指定了子类必须处理的抽象概念.
所以它基本上是一个不同的观点 – 一个是从API的客户端的角度来看,另一个是关于子类的. (请注意,在某些情况下,您可以使用抽象类而不是接口来实现相同的效果,尽管它不被视为良好实践)