差异Scala类声明

Loc*_*kna -2 scala class declaration

我想问下面这两个类声明之间有什么区别.

class Person(name: String, age: Int)
Run Code Online (Sandbox Code Playgroud)

要么

class Person() {
  var name: String = ""
  var age: Int = 0
}
Run Code Online (Sandbox Code Playgroud)

jwv*_*wvh 5

class Person(name: String, age: Int)
Run Code Online (Sandbox Code Playgroud)

name并且age是构造函数参数.因此他们是:

  • 必需 - 为了创建Person实例
  • 不可变的 - 值不能改变
  • private - (默认情况下),不能通过类实例访问

class Person() {
  var name: String = ""
  var age: Int = 0
}
Run Code Online (Sandbox Code Playgroud)

name并且age是类数据成员.他们是:

  • 在构造期间未指定 - 但每个Person实例都给出相同的默认值
  • 可变 - 因为它们是var变量
  • public - (默认情况下),可以通过类实例访问和修改

那么,有什么区别?几乎所有的.