
在研究面向对象设计的设计模式之前,我对Java接口和Java抽象类的理解仍然模糊且难以理解.
当我第一次学习Java语言时,很难理解为什么有接口的概念. 尽管它可以实现所谓的多重继承,但是只有方法名称而没有方法主体的东西,对我来说有什么用呢?我什么也没得到. 除了某些方法名称之外,我是否可以将这些方法添加到具体的类中?
为什么必须要有抽象类的概念?为什么我们不能将此父类编写为具体类,而子类可以继承呢?为什么要制作一个抽象类,又要制作一些没有方法主体的抽象方法,使其看起来像一个接口和一个类,这是不可预测的.
当我开始学习Java设计模式并真正走进面向对象设计的大门时,我意识到我对面向对象设计的理解是如此单一,如此肤浅,并且我没有完全不了解面向对象的思想. 在某种程度上,它的本质还受到面向过程的影响,认为如果您提出一个类,即使它是面向对象的,它实际上也是由过程驱动的.

我仍然想谈谈我对面向对象思维的当前理解,这不一定是正确和全面的,但我认为它应该比以前有所改进.
面向对象的思维,我认为关键是抽象.
我认为软件设计的质量在很大程度上取决于整体架构,而这种整体架构实际上是整个宏业务的抽象框架,而代表业务的高级抽象层的结构逻辑合理在这一点上,仅对于某些算法和某些特定业务实现,才需要考虑您的特定实现. 当您需要开发另一个类似的项目时,可以再次使用以前的抽象层. 面对对象设计,重用的重点实际上应该是抽象层的重用,而不是特定的代码. 块的重用是否突然感到对重用的理解水平已经提高到另一个水平? ^ _ ^
说到抽象,我不禁提到曾经让我头疼的Java接口和Java抽象. 这也是本文的重点.

由于面向对象设计的重点是抽象,因此Java接口和Java抽象类具有必然性.
Java接口和Java抽象类表示抽象类型,它们是我们需要提出的抽象层的具体表达. OOP的面向对象编程抽象类实现接口,如果要提高程序的重用率,增加程序的可维护性和可扩展性,则必须是面向接口的编程,面向抽象的编程,以及正确使用接口和抽象类. 这些太有用了. 抽象类型是您结构的顶层.
Java接口和Java抽象类之间有太多相似之处,并且有太多特殊地方. 对他们来说最好的地方是什么?比较它们,您会发现.
1. Java接口和Java抽象类之间的最大区别是Java抽象类可以提供某些方法的部分实现,而Java接口则不能. 这可能是Java抽象类的唯一优点,但是此优点非常有用.

如果将新的具体方法添加到抽象类中,则其所有子类将立即获得此新方法,并且Java接口无法执行此操作. 如果将新方法添加到Java接口,则使用该新方法将无法成功编译实现该接口的所有类,因为您必须让每个类都再次实现此方法,这显然是Java接口的缺点.
2. 抽象类的实现只能由该抽象类的子类给出,也就是说,该实现处于抽象类定义的继承层次结构中,并且由于Java语言的单一继承,因此,有效性作为类型定义工具的抽象类的使用大大减少了.
在这一点上,Java接口的优点得以体现. 实现Java接口指定的方法的任何类都可以具有此接口的类型,并且一个类可以实现任意数量的Java接口. 类的类型很多.
3. 从第二点来看,不难看出Java接口是定义混合类型的理想工具. 混合类表示一个类不仅具有某种主要类型的行为,而且还具有其他次要行为.

4. 结合第1点和第2点中抽象类和Java接口的优点,出现了一种经典的设计模式: 声明类型的工作仍然由Java接口进行,但同时给出了Java抽象类,并且此接口实现,并且属于此抽象类型的其他具体类可以选择实现此Java接口,也可以选择继承此抽象类. 也就是说,在层次结构中,Java接口位于顶部,其次是抽象类. 哈萨克斯坦未来两个最大的优势可以被发挥到极致. 此模式是“默认适应模式”.
此模式在Java语言API中使用,并且都遵循特定的命名约定: 抽象+接口名称.
Java接口和Java抽象类的存在是为了实现和继承具体的类. 如果您要编写一个具体的类来继承另一个具体的类,那么您的设计将遇到很大的问题. 存在Java抽象类以进行继承,其抽象方法旨在强制实现子类.
使用Java接口和抽象Java类进行变量类型声明,参数类型声明,方法返回类型描述和数据类型转换. 请勿将特定的Java类用于变量类型声明,参数类型声明,方法返回类型描述和数据类型转换.
我认为,如果您的代码甚至没有接口和抽象类,也许我可以说您根本不使用任何设计模式,任何设计模式都与抽象不可分割,而抽象是与Java接口和抽象Java类密不可分.
理解抽象抽象类实现接口,理解Java接口和抽象Java类,我认为它应该真正开始用面向对象的思维来分析问题并解决问题.
本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/jisuanjixue/article-216367-1.html
让人敬佩
继续努力