Welche Auswirkungen haben geschützte Schlüsselwörter in der Klassendefinition in Scala?

8

Ich lerne Scala mit den Übungen aus dem Buch "Scala for the Impatient". Eine Übung fragt das:

  

Die Datei Stack.scala enthält die Definition class Stack[+A] protected (protected val elems: List[A])

     

Erläutern Sie die Bedeutung der protected -Schlüsselwörter.

Kann mir jemand helfen, das zu verstehen? protected ist offensichtlich sinnvoll für Member-Variablen, aber welche Bedeutung hat es in einer Klassendefinition?

    
Abhijit Sarkar 03.05.2015, 22:54
quelle

1 Antwort

6

In Scala schreiben

%Vor%

implementiert auch einen Standardkonstruktor. Wenn Sie Java kennen, dann wäre das in Java so etwas wie

%Vor%

Nun haben Sie in Ihrem Beispiel zwei protected Keywords:

  • protected val elems: List[A]
  • protected (/*...*/)

Der erste Eintrag macht die Variable elems protected, dh sie kann nur von Unterklassen von Stack[+A] aufgerufen (und im Schatten gehalten) werden.

Die zweite Option macht den Konstruktor schreibgeschützt. Dies bedeutet, dass eine neue Stack -Instanz nur von Unterklassen von Stack[+A] erstellt werden kann.

Auch hier wäre der entsprechende Java-Code so etwas wie

%Vor%     
Kulu Limpa 03.05.2015, 23:41
quelle