Qu'est-ce que l'upcasting et le downcasting en Java ? Explication simple

Publié: 2021-01-22

Table des matières

Upcasting et Downcasting en Java

Le transtypage en Java fait référence à la procédure qui implique la conversion d'un type de données en un autre. Cela peut être fait à la fois automatiquement et manuellement. Alors qu'un programmeur doit effectuer lui-même la conversion manuelle, un compilateur est utilisé pour le processus automatique. La conversion descendante et la conversion ascendante sont essentiellement deux types de conversion de type d'objet.

Les objets enfant et parent sont deux types distincts d'objets. Maintenant, il existe deux manières à l'aide desquelles les objets peuvent être initialisés, héritant ensuite également des propriétés des classes enfant et parent. Ces moyens comprennent :

  • Child c = new Child() : Accède à tous les membres relevant des classes enfant et parent
  • Parent p = new Child() : accède uniquement aux membres de la classe parent, ainsi qu'aux méthodes qui ont été remplacées dans la classe enfant

Essentiellement, la conversion de type parent à enfant est connue sous le nom de conversion ascendante, tandis que la conversion de type enfant à parent est appelée conversion descendante.

Le système de transtypage permet de s'assurer que les variables sont traitées par une fonction avec précision ou non. Bien que la conversion descendante ne soit pas possible implicitement, on peut effectuer une conversion ascendante à la fois explicitement et implicitement.

La conversion descendante et la conversion ascendante sont des éléments importants de Java et permettent aux utilisateurs de développer des programmes complexes en utilisant une syntaxe simple. Ils ont également de grands avantages comme le regroupement d'objets divers ou le polymorphisme.

Apprenez des cours de développement de logiciels en ligne dans les meilleures universités du monde. Gagnez des programmes Executive PG, des programmes de certificat avancés ou des programmes de maîtrise pour accélérer votre carrière.

Upcasting

Dans le transtypage ascendant, un objet enfant est un transtypage vers un objet de classe parent. Avec l'utilisation de ce processus, les utilisateurs peuvent accéder facilement aux méthodes et variables distinguées de la classe parent à enfant. L'accès à certaines méthodes et variables particulières de la classe enfant, telles que les méthodes surchargées, est requis dans le processus. Dans de nombreux cas, l'upcasting est également appelé élargissement et généralisation. L'upcasting peut être effectué implicitement et offre aux utilisateurs la possibilité d'accéder aux membres de la classe parent.

L'exemple suivant peut aider à mieux comprendre le processus.

Exemple : Il existe une classe d'animaux qui comprend diverses classes d'animaux, les poissons étant l'une d'entre elles. Maintenant, en supposant que la classe des animaux est étendue par la classe des poissons, il y aurait deux manières d'hériter. L'héritage est l'un des aspects clés de la programmation orientée objet ou POO qui permet à une classe d'hériter des fonctionnalités d'une autre. Cela implique la classe dérivée qui est un sur-ensemble de la classe de base. Il pourrait y avoir plus de méthodes présentées ici que la classe de base. Pendant le transtypage ascendant, la seule chose qui peut arriver avec l'interface de classe est qu'elle peut finir par perdre des méthodes au lieu d'en gagner. En conséquence, le compilateur permet le transtypage ascendant sans aucun type de notations spéciales ou transtypages explicites.

Composition vs Héritage

En ce qui concerne la programmation orientée objet, il y a de fortes chances que l'on finisse par créer et utiliser en regroupant simplement des méthodes et des données ensemble dans une classe, tout en utilisant ensuite les objets présents dans cette classe. Les gens peuvent même utiliser certaines classes existantes pour développer de nouvelles classes avec composition. L'héritage est utilisé relativement rarement. Lors de l'apprentissage d'OPP, même si l'héritage fait l'objet d'une grande attention, il est important que les développeurs connaissent son utilisation correcte et n'essaient pas de l'utiliser simplement partout où ils le peuvent.

En fait, on doit l'utiliser assez rarement, uniquement pour les scénarios où l'héritage s'avère réellement utile. L'un des moyens les plus simples d'identifier si une personne doit utiliser l'héritage ou la composition est de se demander si elle doit passer de sa nouvelle distribution à la distribution de base. Dans le cas où la conversion ascendante est une nécessité, il faudrait alors utiliser l'héritage. Cependant, si ce n'est pas une exigence, il faut s'attarder davantage sur la nécessité de l'héritage.

Downcasting

La conversion descendante est une autre forme de conversion de type d'objet et est utilisée pour nommer l'objet de référence de sous-classe à la classe parent qui n'est pas autorisée en Java. Downcast n'est pas trop difficile à comprendre. Par exemple, s'il existe une classe de base et une classe qui dérive indirectement ou indirectement de la classe de base, chaque fois qu'un objet du type de classe de base continue à être transtypé dans une classe dérivée, il est appelé downcast. Par conséquent, selon la conversion descendante, on descendrait le diagramme d'héritage en s'efforçant de prendre un objet de classe de base, puis de le convertir en un type de classe dérivé. Cependant, il est important de noter qu'en fonction du code en cours d'écriture, la conversion descendante peut ou non avoir un sens.

Au fur et à mesure que les gens exécutent le système de downcasting, ils ne rencontreront aucun type d'erreur de compilateur. Cependant, ils seraient confrontés à java.lang.ClassCastException, qui est une exception d'exécution. Alors maintenant, la question se pose si la conversion descendante n'est pas possible en Java, alors pourquoi les gens l'exécutent-ils? En termes simples, la conversion descendante ne peut être utilisée que dans des situations particulières où l'objet référencé par la classe parent appartient à une sous-classe.

La conversion descendante peut être extrêmement utile lors de la comparaison d'un objet à un autre.

Pour vérifier si un downcasting est valide ou non, on peut exécuter

Le système getClass() permet aux développeurs de comprendre la classe de l'objet transmis, puis de la comparer avec la classe actuelle. Dans le cas où ils ne sont pas égaux, alors la conversion descendante ne sera pas valide et essayer ce processus sera inutile. Le concept de downcasting utilise principalement la conversion des super-types en sous-types. Un tel processus de coulée est généralement effectué de manière explicite. Cela implique essentiellement que les types de plus grande taille sont conçus pour s'adapter explicitement aux types de petite taille.

Upcasting vs Downcasting

Upcasting et. Downcasting a certaines différences très particulières. Certains d'entre eux ont été brièvement soulignés dans les pointeurs suivants :

  • Dans Upcasting, un objet enfant est converti en un objet parent. D'autre part, la référence de l'objet de classe parent finit par être transmise à la classe enfant lorsqu'il s'agit de downcasting.
  • Les gens peuvent effectuer une conversion ascendante à la fois explicitement et implicitement, tandis que la conversion descendante ne peut être effectuée qu'explicitement.
  • Dans le cas de l'upcasting, les utilisateurs peuvent accéder aux variables et aux méthodes de la classe parent dans la classe enfant, mais pas l'inverse. Dans le downcasting, cependant, les variables et les méthodes des deux classes sont facilement accessibles.
  • Le transtypage ascendant permet d'accéder uniquement à des méthodes de classe enfant particulières. Lors de l'exécution de la conversion descendante, toutes les méthodes et variables relevant des deux classes sont rendues accessibles.

Conclusion

L'upcasting est rarement utilisé en Java. Dans la plupart des cas, les gens l'utilisent lorsqu'ils doivent développer un code qui ne traite que de la classe parent. Lorsqu'il s'agit de développer un code permettant d'accéder au comportement de la classe enfant, le downcasting a tendance à être utilisé.

Si vous souhaitez apprendre Java et obtenir également une certification en cloud computing, upGrad offre un programme de certificat avancé en Cloud Computing . Le cours en ligne de 7,5 mois est spécialement conçu pour les professionnels en activité afin de les aider à accéder à des rôles de cloud computing.

Devenir Développeur Full Stack

POSTULEZ MAINTENANT POUR LE MASTER EN INFORMATIQUE DE LIVERPOOL JOHN MOORES