Scala繼承

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)
  }
  
}



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章