);
Product.$init$(this);
}
}
case class 和 class 的一些区别:
- case class 在初始化的时候,不用 new,而普通类初始化时必须要 new。
- case class 重写了 toString 方法。 默认实现了 equals 和 hashCode
- case class 实现了序列化接口 with Serializable
- case class 支持模式匹配(最重要的特征),所有 case class 必须要有参数列表
- 有参数用 case class,无参用 case object
继承和多态
基本语法
class 子类名 extends 父类名 { 类体 }
(1)子类继承父类的属性和方法
(2)scala 是单继承
案例实操:
(1)子类继承父类的属性和方法
(2)继承的调用顺序:父类构造器->子类构造器
class Person(nameParam: String) {
var name = nameParam
var age: Int = _
def this(nameParam: String, ageParam: Int) {
this(nameParam)
this.age = ageParam
println("父类辅助构造器")
}
println("父类主构造器")
}
class Emp(nameParam: String, ageParam: Int) extends
Person(nameParam, ageParam) {
var empNo: Int = _
def this(nameParam: String, ageParam: Int, empNoParam: Int) {
this(nameParam, ageParam)
this.empNo = empNoParam
println("子类的辅助构造器")
}
println("子类主构造器")
}
object Test {
def main(args: Array[String]): Unit = {
new Emp("z3", 11,1001)
}
}