12.Scala中的繼承:超類的構造、重寫欄位、重寫方法程式碼實戰
阿新 • • 發佈:2019-01-04
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課 由王家林老師講解