何时使用Classes vs Objects vs Case Classes vs Traits

时间:2017-04-02 18:07:37

标签: scala

这是我目前所理解的。

当我们需要实例化对象时,应该使用类

只有当我们有一个单例要求意味着不需要多个“对象”实例时,我们才使用“对象”。我在想当我们在项目中构建公共库函数或实用程序函数时,我们可以使用“对象”,这样我们每次在该对象中使用方法/函数时都需要实例化。

当我们想要保存样板代码时,可以使用案例类。假设我们有“股票”类。每个股票一般都有数百个成员变量。而不是开发人员为setter和getter编写代码,如果我们是case类,它会生成许多默认代码。

特性:不知道何时使用。在初始化期间,Traits和Objects都不接受参数。

任何更多的想法和想法都会分享。

1 个答案:

答案 0 :(得分:16)

在Scala中,类似于任何其他OO语言(例如Java) - 就是你在应用程序中使用类来构建对象(而不是Scala对象),这些对象具有状态(例如,保持属性,例如名称一个人)。

Scala对象是单身人士。您在Scala中主要用于

  • 创建函数/工件,它们不需要状态/属于特定对象。在其他OO语言中,您可以使用static关键字来实现此行为。
  • 提供工厂方法(特别是通过apply方法)来实例化类(请参阅Scala配套对象)

案例类旨在用作轻量级类(例如datacontainers)。它们在默认情况下是不可变的,并且应该在结构上进行比较(即通过比较值/状态)而不是通过引用进行比较。 此外,它们还提供开箱即用的序列化等功能。

Traits就像Java中的接口一样,具有更多功能。它们定义了类/对象的接口。

在开始之前,请深入了解Scala,我建议您首先熟悉经典OO原则。