[JAVA] Upcast und Supertyp / Subtyp

Beim Lesen des Java-Quellcodes wird möglicherweise die folgende Beschreibung angezeigt.

Superklassentypvariable=neue Unterklasse();

Es ist geschrieben als. Ich wollte den Begriff für diese Beschreibung wissen. *** Die Vorteile dieser Beschreibung werden in diesem Artikel nicht behandelt **.

Upcast (Superklasse)

Ich sehe es oft, und als ich auf Twitter murmelte, dass diese Notation keine "Besetzung" enthält, sagte mir eine freundliche Person, dass es einen ** Upcast ** gibt (danke). ). Wenn Sie den Begriff kennen, können Sie ihn suchen oder andere fragen.

//Upcast
Superklassentypvariable=neue Unterklasse();

Referenz: [Einführung in Java] Cast (Typkonvertierung) und Upcast, Downcast Da der Typ der zu deklarierenden Variablen und der Typ der zu generierenden Instanz ** Klassen sind, die eine Eltern-Kind-Beziehung haben **, erscheint diese Beschreibung selbst nicht so seltsam.

Upcast (Schnittstelle)

Der Java-Upcast hat jedoch auch die folgende Beschreibung.

Schnittstellentypvariablen=neue Implementierungsklasse();

Es ist geschrieben als. ** Der deklarierte Variablentyp ist interface, der zugewiesene Instanztyp ist class **. Obwohl die Klasse implementiert ist, werden die Schnittstelle und die Klasse als unterschiedliche Typen erkannt, so dass es sich ziemlich seltsam anfühlt. Es fühlt sich wie ein normales Gefühl an, sich hier unwohl zu fühlen, aber es scheint nicht der Fall zu sein. Wenn Sie sich weiterhin unwohl fühlen, wird Ihr Verständnis langsam sein. Die einzige Lösung, die ich mir vorstellen kann, besteht darin, die Beschwerden zu verringern, indem ich die Implementierung wiederhole und sie mit meinen Händen vertraut mache. Wenn Sie jedoch den Namen ** upcast ** und seine Beschreibung und sein Verhalten noch kennen und wissen, dass er auch im Schnittstellentyp verwendet werden kann, ist das Objekt, das sich seltsam anfühlt, klar und leichter zu überwinden. Überlegen.

Supertyp / Untertyp

Außerdem [Grundlagen des ersten Entwurfsmusters - Grundlagen von Entwurfsmustern, die von Kopf und Körper gelernt wurden](https://www.amazon.co.jp/Head-Erste Entwurfsmuster - Grundlagen von Entwurfsmustern, die von Kopf und Körper gelernt wurden - Eric- Wenn Sie Freeman / dp / 4873112494) lesen, gibt es eine Beschreibung von ** Supertyp / Subtyp **.

Superklassentypvariable=neue Unterklasse();
Schnittstellentypvariablen=neue Implementierungsklasse();

Im obigen Fall entsprechen der "Superklassentyp" und der "Schnittstellentyp" links dem ** Supertyp (Typ) **. Andererseits entsprechen die "neue Unterklasse ()" und "neue Implementierungsklasse ()" im rechten Abschnitt ** Instanzen von Untertypen (Typen) **. Ich habe mich mit diesem Namen nicht unwohl gefühlt, weil ich persönlich erkenne, dass sowohl die Klasse als auch die Schnittstelle Typen sind. Bei den meisten Suchvorgängen nach Supertyp / Subtyp geht es jedoch um Generika und Head First-Entwurfsmuster - die Grundlagen von Entwurfsmustern, die von Kopf und Körper gelernt werden können Head-First-Entwurfsmuster --- Die Grundlagen von Entwurfsmustern, an die sich Kopf und Körper erinnern können (Eric-Freeman / dp / 4873112494), sind möglicherweise nicht üblich.

Recommended Posts

Upcast und Supertyp / Subtyp
Upcast, Dowcast und Konstruktor
Basisdatentyp und Referenztyp
Unterschied zwischen primitivem Typ und Referenztyp