Heim >Java >javaLernprogramm >Was sind Kovarianz, Invarianz und Kontravarianz im Klartext?

Was sind Kovarianz, Invarianz und Kontravarianz im Klartext?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-11-11 01:51:031020Durchsuche

What are Covariance, Invariance, and Contravariance in Plain English?

Kovarianz, Invarianz und Kontravarianz im Klartext verstehen

Kovarianz, Invarianz und Kontravarianz sind Begriffe, die beschreiben, wie sich Tippbeziehungen unter bestimmten Bedingungen verhalten Transformationen. In der Programmierung können diese Transformationen Typkonvertierungen, Methodenüberschreibungen oder Vererbung sein.

Kovarianz

Kovarianz bedeutet, dass ein Untertyp eines Typs auch ein Untertyp von ist transformierter Typ. Wenn beispielsweise Klasse A ein Untertyp von Klasse B ist und wir eine Funktion f(T) haben, die einen Typ T annimmt und einen transformierten Typ T'' zurückgibt, dann gilt f(A), wenn A ein Untertyp von B ist auch ein Subtyp von f(B) sein.

Kontravarianz

Kontravarianz ist das Gegenteil von Kovarianz. Im Gegensatz dazu wird ein Subtyp eines Typs einem Supertyp des transformierten Typs zugeordnet. Wenn dieselbe Funktion f(T) aus dem obigen Kovarianzbeispiel kontravariant wäre, dann wäre f(B), wenn A ein Subtyp von B wäre, ein Subtyp von f(A).

Invarianz

Invarianz bedeutet, dass weder Kovarianz noch Kontravarianz für die Transformation gelten. Das heißt, die Subtypbeziehung bleibt von der Transformation unberührt.

Beispiele

Betrachten Sie die folgenden Beispiele:

Java Generics

Generika in Java sind invariant. Das bedeutet, dass beispielsweise List weder ein Subtyp noch ein Supertyp von List ist.

Arrays

Arrays in Java sind kovariant. Dies bedeutet, dass String[] ein Untertyp von Object[] ist.

Methodenüberschreibung

Bei der Methodenüberschreibung gilt Kovarianz für Rückgabetypen und Kontravarianz für Parametertypen. Das heißt, wenn eine Unterklasse eine Methode der Oberklasse überschreibt, kann der Rückgabetyp kovariant sein (ein Untertyp des Rückgabetyps der Methode der Oberklasse) und die Parametertypen können kontravariant sein (Supertypen der Parametertypen der Methode der Oberklasse).

Zusammenfassend lässt sich sagen, dass Kovarianz, Invarianz und Kontravarianz beschreiben, wie sich Typisierungsbeziehungen bei verschiedenen Transformationen wie Typkonvertierungen, Methodenüberschreibungen oder Vererbung verhalten. Das Verständnis dieser Konzepte kann Programmierern helfen, flexibleren und erweiterbareren Code zu schreiben.

Das obige ist der detaillierte Inhalt vonWas sind Kovarianz, Invarianz und Kontravarianz im Klartext?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn