8.3. Dziedziczenie
W definicji obiektu, tak jak w definicji klas, można użyć klauzuli extends, odnoszącej się do dziedziczenia. Gdy ta klauzula jest pominięta, obiekt niejawnie dziedziczy z klasy AnyRef. W pliku Objects5.scala jest zdefiniowany obiekt dziedziczący z klasy Hello5.
Plik Objects5.scala: class Hello5(greeting: String) { println("Initializing class Hello5") def speak = println(greeting) } object Hi5 extends Hello5("Hi!!!!") { println("Initializing object Hi5") }
Obiekt Hi5 dziedziczy po klasie Hello5. W jego definicji pojawia się odwołanie do klasy Hello5, a po niej, w nawiasach, znajduje się argument wymagany przez konstruktor tej klasy. Obiekt Hi5 jest tworzony przy pierwszym odwołaniu do niego, a wobec tego również konstruktor klasy Hello5 jest wywoływany dopiero wtedy, a nie w miejscu definicji obiektu.
scala> Hi5.speak Initializing class Hello5 Initializing object Hi5 Hi!!!! scala> Hi5.speak Hi!!!!
Plik Objects5.scala:
class Hello5(greeting: String) {
println("Initializing class Hello5")
def speak = println(greeting)
}
object Hi5 extends Hello5("Hi!!!!") {
println("Initializing object Hi5")
}
