Scala 繼承

2022-05-13 15:08 更新

Scala支持單繼承,而不是多重繼承。

子類可以只有一個(gè)父類。

Scala類層次結(jié)構(gòu)的根是Any,沒有父類。

class Vehicle (speed : Int){
    val mph :Int = speed
    def race() = println("Racing")
}

Vehicle類采用一個(gè)參數(shù),即車輛的速度。

創(chuàng)建類Vehicle的實(shí)例時(shí),必須傳遞此參數(shù),如下所示:

new Vehicle(100)

該類包含一個(gè)方法,稱為race

擴(kuò)展類

在Scala中擴(kuò)展基類類似于在Java中擴(kuò)展,除了兩個(gè)限制:

  • 方法覆蓋需要override關(guān)鍵字,
  • 只有主構(gòu)造函數(shù)可以將參數(shù)傳遞給基礎(chǔ)構(gòu)造函數(shù)。

可以覆蓋從Scala中的超類繼承的方法,如下所示:

class Car (speed : Int) extends Vehicle(speed) {
    override val mph: Int= speed
    override def race() = println("Racing Car")
}

Car 使用關(guān)鍵字 extends 擴(kuò)展 Vehicle 類。

字段mph和方法種族需要使用關(guān)鍵字覆蓋來覆蓋。

注意

以下代碼顯示了另一個(gè)類Bike
擴(kuò)展Vehicle。

class Vehicle (speed : Int){
    val mph :Int = speed
    def race() = println("Racing")
}

class Car (speed : Int) extends Vehicle(speed) {
    override val mph: Int= speed
    override def race() = println("Racing Car")

}
class Bike(speed : Int) extends Vehicle(speed) {
    override val mph: Int = speed
    override def race() = println("Racing Bike")
}
object Main extends App {
    val vehicle1 = new Car(200)
    println(vehicle1.mph )
    vehicle1.race()
    val vehicle2 = new Bike(100)
    println(vehicle2.mph )

}
以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)