5.12. Przedrostek super
W kodzie klasy można odwoływać się do składowych nadklasy poprzez przedrostek super. W przypadku klas definiowanych wewnątrz innych klas, ten przedrostek może być poprzedzony nazwą klasy otaczającej.
Plik Super1.scala: class Hi1 { def greet = println("Hi1") } class Hi2 { def greet = println("Hi2") } class Hi3 extends Hi1 { override def greet = println("Hi3") class Hi4 extends Hi2 { override def greet = println("Hi4") def talk = { this.greet Hi3.this.greet super.greet Hi3.super.greet } } }
Przykłady odwołań z przedrostkami this i super znajdują się w definicji metody talk z klasy Hi4, zdefiniowanej w pliku Super1.scala. Poniżej pokazane jest działanie metody talk.
scala> val a = new Hi3 a: Hi3 = Hi3@c4ddae scala> val b = new a.Hi4 b: a.Hi4 = Hi3$Hi4@b81efb scala> b.talk Hi4 Hi3 Hi2 Hi1
Plik Super1.scala:
class Hi1 {
def greet = println("Hi1")
}
class Hi2 {
def greet = println("Hi2")
}
class Hi3 extends Hi1 {
override def greet = println("Hi3")
class Hi4 extends Hi2 {
override def greet = println("Hi4")
def talk = {
this.greet
Hi3.this.greet
super.greet
Hi3.super.greet
}
}
}
