Java 抽象的用途是什么?

Java 抽象的用途是什么?,java,abstraction,Java,Abstraction,我正在努力理解Java中抽象的总体用法 我已经在这个链接中制作了一个示例: 我理解它的实现,但我不明白为什么它是必要的。如果要在这两个子类中再次使用,为什么要在Employee类中使用calculateSalary方法?抽象的总体使用是解耦的。要与员工一起工作,不需要知道实现,只需要知道接口及其合同。例如,这用于:Collections.sort(…)的程序员不需要知道特定列表的实现就可以对其进行排序。这提供了这样一个好处,即实现支持将来的代码,该代码符合。在这方面是相关的(#自我提升)。耦合越

我正在努力理解Java中抽象的总体用法

我已经在这个链接中制作了一个示例:
我理解它的实现,但我不明白为什么它是必要的。如果要在这两个子类中再次使用,为什么要在Employee类中使用calculateSalary方法?

抽象的总体使用是解耦的。要与
员工一起工作
,不需要知道实现,只需要知道接口及其合同。例如,这用于:
Collections.sort(…)
的程序员不需要知道特定列表的实现就可以对其进行排序。这提供了这样一个好处,即实现支持将来的代码,该代码符合。在这方面是相关的(#自我提升)。耦合越少,摩擦越小,代码越不脆弱


也就是说,您提供的示例很糟糕,因为它违反了:计算工资不是
员工
实例的责任。为此,我们应该有一个单独的对象,根据
员工
实例和一些工作小时数计算工资。在内部,这个Uber计算器可以使用一个,每个
员工都有一个
计算器
-实现,将
员工
与他们的工资计算方式分离。这提供了扩展性和灵活性的额外好处:如果计算工资的方式发生变化(例如,公司可能会改变政策,使每个
全职员工
获得相同的工资,或者公司可能希望按周而不是按月计算工资),其他使用
FullTimeEmployee
的服务称为未受影响)。

如该链接所述
抽象是一个向用户隐藏实现细节的过程
So
calculateSalary()
抽象函数在抽象
超类
中定义,因此它是
子类
(正在扩展Employee抽象类)可以根据他们的
算法/计算
进行定义,这些
算法/计算
将对其他
实体/用户
隐藏所有关于面向对象编程和设计的好文章都谈论抽象。你研究过哪些内容?@VaradMondkar抽象的好处不是某种隐藏(这意味着某种(虚假的)保密)。真正的好处是减少耦合,反过来减少摩擦。我建议观看。@Turing85感谢您更正和分享视频。解释得很好