静态和原语不是OOP的一部分。我已经读过scala类定义中不允许使用静态和原语。如果这是真的,那么为什么在java和c#以及其他少数语言中允许使用静态和原语?
答案 0 :(得分:3)
它们不是“纯粹的”面向对象的一部分,但有时“纯粹”妨碍了“完成工作”。
使用基元可以使数学运算(特别是)更快,静态可以实现许多有用的设计模式。
答案 1 :(得分:1)
C#,C ++和Java是通用编程语言。您可以在C#4.0中找到鸭子类型的元素,函数式编程的元素以及更多有用的构造。
并非每个程序而非程序的每个部分都必须是面向对象的。在需要时使用OOP,当它用于目的时,在C#,C ++和Java中,每当你觉得OOP是'用大炮射击蚊子时,你可以使用其他或更简单的结构。
答案 2 :(得分:1)
这是一项工程决策。像大多数工程决策一样,它涉及在设计上仔细平衡许多不同的力量。在这种情况下,它的语言设计。不同的语言旨在解决不同的问题并具有不同的目标。因此,不同语言得出不同结论并不奇怪。
在这种情况下,拥有基元会有成本和收益。
原语可以更快。 基元可以更容易地执行某些低级别的事情(例如,将单个位写入嵌入式系统中的微型控制器上的寄存器。)
另一方面,原语可以使您的编程语言更复杂,因为您的原始类型具有不同的语法等来操作它们。一些较新的语言试图通过在封面下使用原始类型来使用蛋糕并使用它,但在语法方面使它们看起来像对象。