Prosty getter / setter przesłonięcie
Powiedzmy, że mamy klasę z właściwością „name”:
class SuperFoo(var name: String)
Jeśli chcę to zmienić, np. Dodaj trochę blokowania połączeń:
class SubFoo(n: String) extends SuperFoo(n) {
val lock = new ReentrantLock
override def name(): String =
{
lock.lock
try {
super.name
} finally {
lock.unlock
}
}
override def name_=(arg: String): Unit = {
lock.lock
try {
super.name = arg
} finally {
lock.unlock
}
}
}
Powyższe powoduje błąd kompilacji:
super may be not be used on variable name
Jakieś pomysły, jak poprawnie to wdrożyć? (tj. nadpisuj getter i setter, aby dodać blokowanie wokół nich). Dzięki!