因此,我之前曾發佈過一篇關於從超類內訪問子類的字段以解決我遇到的問題的文章。但是他們明確表示這實際上是不可能的。所以我做了什麼,我想實現一個小例子:將不同類型的項目放置在列表中,並且能夠映射它們
abstract class LotteryTicket(val numbers: String) {
val price: Int
}
//The numbers are different for each ticket and are used to denote a winner in the end.
class GoldTicket(numbers: String) extends LotteryTicket(person) {
val price: Int = 10
}
class SilverTicket(numbers: String) extends LotteryTicket(person) {
val price: Int = 5
}
abstract class Drink {
val price: Int
}
object Water extends Drink {
val price: Int = 1
}
object Coffee extends Drink {
val price: Int = 2
}
class Bill
class Customer
類「法案」應該包含一個列表,它可以包括飲料以及LotteryTickets,對此總可以計算與客戶有能夠做出這樣的賬單。客戶類別還需要確認購買的方法,並檢查他的LottoryTicket上的號碼是否與他購買的每張售票不同。因爲當他在2張票上有相同的號碼時確認失敗。它也必須能夠以一種簡單的方式在未來添加新產品(例如食品)(無需更改核心代碼)。
你總是可以創建一個'List [Any]',但我會嘗試構造你的代碼,這樣你就可以爲每個類型創建一個列表,或者讓列表中的項目從同一個超類繼承(類似'列表[T <:CommonSuperClass]') –
你的意思是像一個通過Drink和Ticket擴展的超類'Item'嗎? –
當然,只要從「Item」繼承它們是有意義的。考慮如何使用該列表,以及是否以類似的方式使用「Drink」和「Ticket」 –