[JAVA] Upcast et super type / sous-type

Lors de la lecture du code source Java, vous pouvez voir la description suivante.

Variable de type de super classe=nouvelle sous-classe();

Il est écrit comme. Je voulais connaître le terme pour cette description. *** Les avantages de cette description ne seront pas abordés dans cet article **.

Upcast (super classe)

Je le vois souvent, alors quand j'ai marmonné sur Twitter qu'il n'y avait pas de "casting" dans cette notation, une personne gentille m'a dit qu'il y avait un ** upcast ** (merci). ). Si vous connaissez le terme, vous pouvez le rechercher ou demander aux autres.

//Upcast
Variable de type de super classe=nouvelle sous-classe();

Référence: [Introduction à Java] Cast (conversion de type) et upcast, downcast Puisque le type de la variable à déclarer et le type de l'instance à générer sont des ** classes qui ont une relation parent-enfant, **, cette description elle-même ne semble pas si étrange.

Upcast (interface)

Cependant, l'upcast Java a également la description suivante.

Variables de type d'interface=nouvelle classe d'implémentation();

Il est écrit comme. ** Le type de variable déclaré est interface, mais le type d'instance affecté est class **. Même si la classe est implémentée, l'interface et la classe sont reconnues comme des types différents, donc cela semble assez étrange. Cela ressemble à une sensation normale de se sentir mal à l'aise ici, mais cela ne semble pas être le cas. Si vous continuez à vous sentir mal à l'aise, votre compréhension sera lente. La seule solution à laquelle je peux penser est de réduire l'inconfort en répétant la mise en œuvre et en la familiarisant avec mes mains. Cependant, si vous connaissez toujours le nom ** upcast **, sa description et son comportement, et savez qu'il peut également être utilisé dans le type d'interface, l'objet qui vous semble étrange sera clair et il sera plus facile à surmonter. pense.

Super type / sous-type

En outre, [Head First Design Pattern-Basics of Design Patterns Learned by Head and Body](https://www.amazon.co.jp/Head-First Design Patterns-Basics of Design Patterns Learned by Head and Body-Eric- Si vous lisez Freeman / dp / 4873112494), il y a une description de ** super type / sous-type **.

Variable de type de super classe=nouvelle sous-classe();
Variables de type d'interface=nouvelle classe d'implémentation();

Dans le cas ci-dessus, le "type de super classe" et le "type d'interface" à gauche correspondent au ** super type (type) **. D'autre part, la «nouvelle sous-classe ()» et la «nouvelle classe d'implémentation ()» dans la section de droite correspondent à ** des instances de sous-types (types) **. Je ne me sentais pas mal à l'aise avec ce nom car je reconnais personnellement que la classe et l'interface sont des types. Cependant, la plupart des recherches par supertype / sous-type portent sur les génériques et Head First design pattern-the basics of design patterns that can be learn by the head and body Modèle de conception Head-First --- Les bases des modèles de conception dont la tête et le corps peuvent se souvenir-Eric-Freeman / dp / 4873112494) peuvent ne pas être courantes.

Recommended Posts

Upcast et super type / sous-type
Upcast, downcast et constructeur
Type de données de base et type de référence
Différence entre le type primitif et le type de référence