1、每个对象都有默认的toString方法,但是具体的每一个类的具体实现都不一样,所以这里用override重写
2、worker继承自Person1,是Person1的子类,Worker有三个参数:name,age,salary,其中salary被val限定,是worker的成员,传来的name,age同样要传递给父类的构造器
class Person1(val name : String, var age :Int){
println("The primary constructor of Person")
val school = "BJU"
def sleep = "8 hours"
override def toString = "I am a Person1!"
}
class Worker(name : String, age : Int, val salary : Long) extends Person1(name, age){
println("This is the subClass of Person, Primary constructor of Worker")
override val school = "Spark"//重写字段
override def toString = "I am a Worker!"+super.sleep
//重写worker的toString,使用super调用子类的sleep方法
}
java中继承,首先是构造函数的要求,其次是用super调用。而scala就是继承使用参数,传递给子类的构造器,自动填充。
def main(args: Array[String]){
val w = new Worker("Spark",5,100000)
//先调用父类构造器,然后是子类构造器
println("School:"+w.school)
//调用重写字段
println("Salary:"+w.salary)
println(w.toString()) //调用重写方法