1.extends關鍵字、重寫字段和方法、超類的構造:
1.1 擴展類:
擴展類使用extends,使用繼承給出子類需要而超類沒有的字段和方法,或者重寫超類的方法。和java一樣,可以將類聲明爲final,這樣這個類將不能被繼承。也可以將字段或者方法聲明爲final,這樣,字段和方法不能被重寫(override)。下面程序例子中,Employee類繼承Person類。
1.2 重寫方法、字段:
Scala中重寫一個非抽象方法必須使用override修飾符。在scala中調用超類方法和java完全一樣,使用super關鍵字。
1.3 使用超類構造器:
類有一個主構造器和任意數量的輔構造器,而每個輔構造器必須以對先前定義的輔構造器或主構造器的調用開始。那麼,子類的輔助構造器最終都會調用主構造器,只有主構造器可以調用超類的構造器。
調用Employee的主構造方法
class Employee(name:String, age:Int, val salary:Double) extends Person(name,age)
這裏有val修飾的salary字段代表是Employee的成員,在調用Employee的主構造器時,也調用了Person的主構造器。
Person類的主構造器Person(val name:String ,val age:Int),定義了name和age兩個成員,同時還定義了一個成員school。
將類和主構造器交織在一起可以帶來更精簡的代碼。類的參數就是主構造器的參數。
package com.vip.scala.packages /** * 功能:繼承相關操作的實現。 * Date:2016-11-02 */ class Person(val name:String ,val age:Int) { println("You constructed the Person Class!!!") val school = "BJTU" override def toString() = { "This is the person.toString()!" } } class Employee(name:String, age:Int, val salary:Double) extends Person(name,age){ println("You constructed the Employee Class!!!") override val school = "SJTU" override def toString() = { super.toString() + "This is the employee.toString()!" } } object OverwriteOperations { def main(args:Array[String]) = { val emp1 = new Employee("Tom",23,880238) val per1 = new Person("Jak",46) println("emp1's school: " + emp1.school) println("per1's school: " + per1.school) println(emp1.name) } }