我想覆蓋在一個抽象類通過另一個類擴展中定義的類型的方法。覆蓋抽象Scala的類型
這裏是爲了說明的簡單示例:
abstract class abstr_test{ def word: Int}
class sub_test(s :String) extends abstr_test{def word: String = s}
我想覆蓋在一個抽象類通過另一個類擴展中定義的類型的方法。覆蓋抽象Scala的類型
這裏是爲了說明的簡單示例:
abstract class abstr_test{ def word: Int}
class sub_test(s :String) extends abstr_test{def word: String = s}
只是爲了解釋爲什麼允許你想要什麼(而不是@ soote的答案提供的)將是一個非常糟糕的主意。
說你的方法的範圍有val x: abstr_test
。然後你可以做val y: Int = x.word
。 x
來自哪裏並不重要;如果你到這條線(和x
不null
,並word
實現不拋出異常),則y
必須是Int
;否則,def word: Int
甚至意味着什麼?
但如果sub_test
延伸abstr_test
,則sub_test
類型的值也是abstr_test
的值;再次,這只是「子類型」的含義。所以你實際上可以有val x: abstr_test = new sub_test("not a number")
。 val y: Int = x.word
之後y
的值應該是多少?
具有構件'word'與一種類型'Int'的接口,將強制執行的子類的簽名。 Res ipsa loquitur這是不可能的。 – ashawley
性狀試驗[A] {DEF字:A} 類StringTest(S:字串)延伸試驗[字符串] {DEF字:字符串= S} –
感謝所有!非常有幫助 –