object ExtendOverride_12 {
def main(args: Array[String]): Unit = {
val w = new Worker("Spark", 5, 100000)
println("school: " + w.school)
println("salary: " + w.salary)
println(w.toString)
}
}
class Person1(val name : String, val age : Int){ //name和age是其字段
println("The primary constructor of Person")
val school = "BJU"
def sleep = "8 hours"
override def toString = "I am a Person!" //所有对象都有toString(),类似Java类extends Object
}
class Worker(name : String, age : Int, val salary : Long) extends Person1(name , age){ //子类相比父类多了salary字段
//这里是重点。子类传入的参数name、age也会传入父类主构造器中,把父类主构造器所有参数都填充满。而Java中,用super()调用父类构造器
println("This is the subclass of Person, Primary constructor of Worker")
override val school = "Spark" //重写字段
override def toString = "I am a Worker!! " + super.sleep //重写toString()方法 这里"super."可以去掉
}输出:
The primary constructor of Person
This is the subclass of Person, Primary constructor of Worker
school: Spark
salary: 100000
I am a Worker!! 8 hours
参考资料来源于 DT大数据梦工厂 Scala零基础实战经典第12课 由王家林老师讲解
版权声明:本文为KongMingJue原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。