在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/Java  Scala/ scala中的Object 繼承問題

scala中的Object 繼承問題

第一段代碼:
class Test{}
object Driver extends  Test{

}


第二段代碼:

abstract Fruit{

val name :String 
val color :String 
}

object Fruit{
 object Apple extends Fruit("apple","red")
  val menu=List(Apple)
}

問題:
(1) scala中 為什么么object也可以使用extends 繼承自class或者trait ,如何理解

(2)第二段代碼中為什么 extens Fruit("A","B") 這里帶了兩個參數(shù)??

感謝各位答疑!

補充:

clipboard.png

回答
編輯回答
兔寶寶
  1. scala設計就是如此:一個 object 可以擴展類或特質(zhì),其結(jié)果是一個擴展了指定類或特質(zhì)的對象,同時擁有在對象定義中給出的所有特性。objectclass 的區(qū)別是:你可以理解為 object 是單例模式,它只能有一個;而 class 可以創(chuàng)建多個。
  2. abstract Fruit 是什么東西……而且大括號括起來的是代碼塊,Fruit里面兩個值都是 val,你必須改成小括號使用主構(gòu)造器方法。如下可通過編譯:
abstract class Fruit(val name: String, val color: String)

object Fruit{
  object Apple extends Fruit("apple","red")
  val menu=List(Apple)
}

這里 extens Fruit("A","B") 帶了兩個參數(shù),就是在繼承時構(gòu)造,畢竟里面兩個值你都用了 valobject Fruit 就是 abstract class Fruit 的伴生對象了。

2017年10月10日 13:26
編輯回答
晚風眠
  1. scala里面的object并不是單純的對象的概念,也可以看成是類.類似于java里面的工具類.可以繼承其他類.
  2. 繼承Fruit類,每當你用Apple實例化對象時,都要設置name和color. 那么在繼承的時候初始化,就可以在多次實例化Apple時避免了每次都初始化屬性的問題.
2018年7月31日 10:23