2016-09-21 2 views
8

Wenn ich die folgende Klassenhierarchie:Kotlin Abstrakt Geschützte Eigenschaft

abstract class Foo<out T : Bar>() { 
    abstract protected val thing: T 
} 

class Baz : Foo<BarImpl> { 
    override protected val thing: T = ... 
} 

Ich erhalte eine Warnung auf Baz :: Sache sagen:

Redundante Sichtbarkeitsmodifizierer

Heißt das bedeutet der Compiler behandelt es als geschützt, ohne dass Sie dies angeben müssen, oder dass es öffentlich sein muss?

Antwort

7

Sie erhalten in Kotlin eine IDE Inspection Style Warnungen für Dinge wie zusätzliche Semikolons, die Sie nicht benötigen, einen zusätzlichen generischen Typparameter, der bereits abgeleitet werden kann, und mehr. Ihr für redundante Sichtbarkeitsmodifikator ist in den gleichen Zeilen.

Wenn Sie die Inspektion Nachricht erweitern Sie den vollständigen Text siehe:

Diese Inspektionsberichte Sichtbarkeitsmodifizierer, die die Standardsichtbarkeit eines Elements (public für die meisten Elemente entsprechen, für die Mitglieder geschützt, die ein geschütztes Mitglied außer Kraft setzen).

Und Sie können die Inspektion innerhalb Ihrer IDE ausschalten, wenn Sie nicht mehr, was es zu sehen ist.

Noch ein paar Anmerkungen dazu:

Wenn ein Verfahren oder ein Mitglied eines Vorfahren Klasse überschreiben Sie bereits auf dem gleichen Zugriffsebene sind, wie wenn es wurde erklärt. Das Sagen protected ist das Offensichtliche (zu dem Compiler, der es kennt, ist protected).

Sie können den Zugriffsmodifikator erneut festlegen, wenn Sie möchten. Und Sie können es mehr öffnen, indem Sie es zu public ändern. Aber Sie können es nicht weiter einschränken, zum Beispiel gehen Sie zu private (weil, wenn es privat ist, wie Sie es überschreiben könnten, ist diese Idee mit override inkompatibel), die ein Compiler-Fehler wird.

Verwandte Themen