Scala-之样例类(模版类) case class 和 密封类 sealed class
1 样例类
样例类不仅能够像普通类那样创建方法,还可以自定生成get set tostring equals apply unapply等方法,可直接使用
//声明一个样例类
case class B{
var name:String
def say(s:String):Unit
}
2 密封类
//声明一个密封类
sealed class BB{
}
3 case class and sealed class easy demo
package com.shufang.funs
object SealedClassDemo {
def main(args: Array[String]): Unit = {
val s = new S1()
println(s)
}
}
/**
* 这个一个密封类:
* 只能在相同的源文件中定义,不能在该文件之外的.scala文件中定义
* TODO 这个密封类可以被样例类继承,但是必须在同一个文件下
*/
abstract sealed class SealedClassDemo {
var name: String
def say(): String
}
// 密封类在该文件下是可以被样例继承的,继承所有的成员,包括方法、属性等
case class S1() extends SealedClassDemo {
//定义一个属性,是私有的,但是有get setter方法
var age: Int = _
override def say(): String = "s2"
//充血属性
override var name: String = _
//定义构造器,必须显示调用主构造器
def this(age:Int) {
this()
this.age = age
}
}
case class S2() extends SealedClassDemo {
override def say(): String = "s2"
override var name: String = _
}
case class S3() extends SealedClassDemo {
override def say(): String = "s3"
override var name: String = _
}