有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java对数据的抽象与对行为的抽象

我正在读一本关于Java中Lambdas表达式的书,我偶然发现了这句话

The difference is that object-oriented programming is mostly about abstracting over
data, while functional programming is mostly about abstracting over behavior.

有人能和蔼可亲地解释一下上面这句话中提到的区别吗

资料来源: http://shop.oreilly.com/product/0636920030713.do


共 (2) 个答案

  1. # 1 楼答案

    我会这样写:“区别在于,面向对象编程主要是关于实时对象之间的关系和通信,而函数式编程主要是面向期望的结果。”

    当您使用OOP语言时,给定的域通常对您非常重要。另一方面,对于函数式语言,您不关心域,只关心应该实现的确定性结果

  2. # 2 楼答案

    具有讽刺意味的是,当人们试图将FP与其他范式进行比较时,可以提出无限的类比

    在这种特殊情况下,一旦你明白了“抽象某件事”的含义,你就可以解开这个谜团了

    对某事物进行抽象意味着你隐藏该事物的细节,并提供抽象以访问该事物,从而使外部世界看不到该事物的细节

    应用上述理论,我们可以得出:

    在OOP中,您将隐藏数据的细节,并提供抽象(接口、类等)来访问数据

    在FP中,您将隐藏行为的细节,并提供抽象(模块,即一组函数)来访问行为