定义语法:
特点
1.不可变性:创建对象的属性不可变
2.创建对象不用写new
3.自动重写方法:toString,equals,hashCode,copy
Scala
import scala.collection.mutable
//定义一个Book类
//实例化两本不相同的书,把他们放入Set
case class Book(val id:String, val name:String, val stock:Int)
//测试类
object ddd {
def main(args: Array[String]): Unit = {
val book1 = Book("001","高效人士的七个习惯",3)
println(book1)
// book1.id="002"
val book2 = new Book("001","高效人士的七个习惯",3)
val book3 = new Book("001","高效人士的七个习惯",3)
//book1==book1
//book2==book1
println(book1==book2)
//定义一个用来装书的可变Set
val books = mutable.Set[Book]()
//Set可以去重,但是他需要去比较两个元素是否相等
//添加一本书
books += book1
books +=book2
books +=book3
println(books)
}
}
不用case class代码如下:
Scala
import scala.collection.mutable
//定义一个Book类
//实例化两本不相同的书,把他们放入Set
class Book(val id:String, val name:String, val stock:Int){
override def equals(obj: Any): Boolean = {
val o =obj.asInstanceOf[Book]
o.id ==id
}
//获取 hasCode
override def hashCode():Int={
id.hashCode
}
}
//测试类
object dddd {
def main(args: Array[String]): Unit = {
val book1 = new Book("001","高效人士的七个习惯",3)
println(book1)
// book1.id="002"
val book2 = new Book("001","高效人士的七个习惯",3)
val book3 = new Book("001","高效人士的七个习惯",3)
//book1==book1
//book2==book1
println(book1==book2)
//定义一个用来装书的可变Set
val books = mutable.Set[Book]()
//Set可以去重,但是他需要去比较两个元素是否相等
//添加一本书
books += book1
books +=book2
books +=book3
println(books)
}
}
1.case class的定义语法是什么?
case class 类名(参数 1: 类型 1, 参数 2: 类型 2,...)
2.case class有哪些作用?
一、简洁的构造方式
二、自动生成方法
三、模式匹配
四、不可变数据结构
五、方便的复制和修改
3.case class和普通class的区别
一、语法简洁性
二、模式匹配便利性
三、不可变性与可变性
四、复制便捷性