Sunrabbit

Kovarianz und Kontravarianz

  • Verfasst in: Koreanisch
  • Land: Alle Ländercountry-flag
  • IT

Erstellt: 2024-11-01

Erstellt: 2024-11-01 01:06

Dieser Inhalt begegnet einem ganz natürlich, wenn man Compiler-Entwickler ist oder die API eines Compilers verwendet oder wenn man das Typsystem eines Compilers übermäßig stark nutzt.
Er ist in unserem Programmieralltag ganz selbstverständlich integriert.
Wenn wir beispielsweise die beiden Typen Animal und Dog haben,

und Dog wird Animal zugewiesen, dann ist das Kovarianzund

umgekehrtwenn Animal Dog zugewiesen wird, dann ist das Kontravarianzen.

Normalerweise kann man Animal nicht Dog zuweisen.

Das erscheint aus der Sicht eines normalen Nutzers nicht sinnvoll,
daher achten Compiler-Entwickler darauf und implementieren Kontravarianzen nur in einigen Bereichen.

Normalerweise wird Kontravarianzen wie oben bei den Eingabeparametern von Funktionen verwendet, während für die Ausgabeparameter Kovarianz beibehalten wird.

Warum ist diese Kontravarianzen überhaupt notwendig?Das fragen Sie sich vielleicht.

Sie hilft dabei, in Bereichen wie der Ereignisbehandlung flexibler und polymorpher zu arbeiten.

Bei Kovarianz können hingegen Probleme auftreten.

Im obigen Code wird durch die Verwendung von Animal anstelle von Dog die Flexibilität erhöht und die Polymorphie berücksichtigt.

Wenn stattdessen ein Untertyp von Dog, z. B. Chiwawa, verwendet würde, würde bei der Ausführung des Event-Handlers aufgrund der in Dog nicht vorhandenen Chiwawa-spezifischen Schnittstelle ein Fehler auftreten.

Wenn die Funktion ausgeführt wird, kann man sagen: "Da der Typ Animal verwendet wird, wird der Untertyp von Animal automatisch eingesetzt."

Das kann den Eindruck erwecken, dass Dog Animal zugewiesen wird.

Normalerweise wird Kontravarianzen hauptsächlich für Eingabeparameter verwendet.

Invarianz, Invarianz

Kurz gesagt: Invarianz bedeutet, dass sowohl Kovarianz als auch Kontravarianzen möglich sind, während Invarianz bedeutet, dass keines von beiden möglich ist.

Abschließend

Dieser Inhalt ist einfach oder komplex, je nach Betrachtungsweise,

Es wäre vielleicht eine gute Idee, dies einmal selbst zu lesen.




Kommentare0