case class和class的区别
以以下两个class为例:
class
1 | class BankAccount { |
case class
1 | case class Note(name: String, duration: String, octave: Int) |
1.创建方式
一个要new,一个不用
1 | val aliceAccount = new BankAccount |
2.对象比较
1 | val aliceAccount = new BankAccount |
3.模式匹配
只有case class支持:
1 | c3 match { |
4.扩展性
class可继承,而case class是不变的
5.为什么需要case class
总的来说,case class就是class的特例,提取出来是因为实践中大量使用case class.
对于上面那个Note,扩展成class如下:
1 | class Note(_name: String, _duration: String, _octave: Int) extends Serializable { |
例子:
1 | val c3 = Note("C", "Quarter", 3) |