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!!!!

Język programowania Scala Wydanie 2. Copyright © Grzegorz Balcerek 2016

Licencja Creative Commons

Ten utwór jest dostępny na licencji Creative Commons Uznanie autorstwa-Na tych samych warunkach 4.0 Międzynarodowe.

Oracle and Java are registered trademarks of Oracle and/or its affiliates. Other names may be trademarks of their respective owners.