首页 > 解决方案 > 差异 Scala 类声明

问题描述

我想问一下下面这两个类声明有什么区别。

class Person(name: String, age: Int)

或者

class Person() {
  var name: String = ""
  var age: Int = 0
}

标签: scalaclassdeclaration

解决方案


class Person(name: String, age: Int)

name并且age是构造函数参数。因此,它们是:

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

class Person() {
  var name: String = ""
  var age: Int = 0
}

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

  • 在构造期间未指定- 但为每个Person实例提供相同的默认值
  • 可变的 - 因为它们是var变量
  • public -(默认)并且可以通过类实例访问和修改

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


推荐阅读