Я создаю черту с одним абстрактным методом. Затем я создаю класс, который использует этот признак. Этот класс содержит конкретный переопределенный метод. Так что этот код работает отличноscala: абстрактные методы в чертах
trait Logged {
def log(msg: String)
}
class A extends Logged{
def log(msg: String) {
println(msg)
}
def a(msg: String) {
log(msg)
}
}
val a = new A
a.log("jopa")
Но когда я создаю черту цепи вещи запутаться:
trait Logged {
def log(msg: String)
}
trait TimestampLogger extends Logged {
abstract override def log(msg: String) {
super.log("huy: " + msg)
}
}
class A extends Logged with TimestampLogger {
def log(msg: String) {
println(msg)
}
def a(msg: String) {
log(msg)
}
}
val a = new A
a.log("jopa")
Этот код не работает ни с overridden
журнала модификатора метода, ни с чем я пытался. В чем проблема?
'super.log' в' TimestampLogger' не имеет смысла. Это не реализовано. –
@ LimbSoup, так как я могу использовать иерархию журнала? Как я могу использовать этот метод журнала? – zapadlo
Вы не хотите, чтобы определение по умолчанию (но не абстрактное) записывалось в журнале? Затем вы можете переопределить его в подклассах. –