Итак, я сделал сообщение ранее о доступе к полю подкласса из суперкласса, чтобы решить проблему, которая у меня есть. Но они дали понять, что это практически невозможно. Так что я сделал маленький пример того, что я хочу добиться:Размещение элементов разных типов в списке с возможностью их сопоставления
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
Класс «Bill» должен содержать список, который может включать в себя напитки, а также LotteryTickets, для которых общее количество можно рассчитывать и клиент должен быть в состоянии сделать такой счет. Класс Customer также нуждается в методе, который подтверждает покупку и проверяет, отличаются ли номера в его LottoryTicket для каждого купленного им Билета. Потому что, когда у него одинаковое количество на 2 билета, подтверждение не получается. Кроме того, в будущем можно добавлять новые продукты (например, например, пищу), без изменения основного кода.
Вы всегда можете создать «Список [Любой]», но я бы попытался структурировать ваш код, чтобы у вас либо был список для каждого типа, либо чтобы элементы в списке наследовались от того же суперкласса (что-то вроде ' Список [T <: CommonSuperClass] ') –
Вы имеете в виду как суперкласс« Item », который распространяется на Drink and Ticket? –
Уверен, если у них есть смысл унаследовать от «Элемента». Подумайте о том, как будет использоваться список и будет ли использоваться «Drink» и «Ticket» аналогичным образом. –