logo

Upcasting et Downcasting en Java

Un processus de conversion d'un type de données en un autre est appelé Typage et Diffusion ascendante et Downcasting est le type de transtypage d'objet. En Java, l'objet peut également être transtypé comme les types de données. Parent et Enfant les objets sont deux types d'objets. Il existe donc deux types de transtypage possibles pour un objet, à savoir : Parent à enfant et Enfant à parent ou je peux dire Diffusion ascendante et Downcasting .

Dans Java , l'objet peut également être transtypé comme les types de données. Parent et Objets enfants sont deux types d'objets. Il existe donc deux types de transtypage possibles pour un objet, à savoir : Parent à enfant et Enfant à parent ou je peux dire Diffusion ascendante et Downcasting .

Typage est utilisé pour garantir si les variables sont correctement traitées par une fonction ou non. Dans Diffusion ascendante et Downcasting , nous avons typé un objet enfant à un objet parent et un objet parent à un objet enfant simultanément. Nous pouvons effectuer un upcasting implicitement ou explicitement, mais le downcasting ne peut pas être implicitement possible.

Upcasting et Downcasting en Java

Examinons en profondeur ces deux types de casting d'objets :

tutoriel de réaction js

1) Diffusion ascendante

Diffusion ascendante est un type de transtypage d'objet dans lequel un objet enfant est transtypé en un objet de classe parent . En utilisant l'Upcasting, nous pouvons facilement accéder aux variables et méthodes de la classe parent vers la classe enfant. Ici, nous n'accédons pas à toutes les variables et à la méthode. Nous accédons uniquement à certaines variables et méthodes spécifiées de la classe enfant. Diffusion ascendante est également connu sous le nom Généralisation et Élargissement .

UpcastingExample.java

 class Parent{ void PrintData() { System.out.println('method of parent class'); } } class Child extends Parent { void PrintData() { System.out.println('method of child class'); } } class UpcastingExample{ public static void main(String args[]) { Parent obj1 = (Parent) new Child(); Parent obj2 = (Parent) new Child(); obj1.PrintData(); obj2.PrintData(); } } 

Sortir:

Upcasting et Downcasting en Java

2) Descente vers le bas

Diffusion ascendante est un autre type de transtypage d'objet. Dans Upcasting, nous attribuons un objet de référence de classe parent à la classe enfant. En Java, nous ne pouvons pas attribuer un objet de référence de classe parent à la classe enfant, mais si nous effectuons un downcasting, nous n'obtiendrons aucune erreur de compilation. Cependant, lorsque nous l'exécutons, il lance le 'ClassCastException' . Maintenant, le fait est que si le downcasting n'est pas possible en Java, alors pourquoi est-il autorisé par le compilateur ? En Java, certains scénarios nous permettent d'effectuer du downcasting. Ici, l'objet de sous-classe est référencé par la classe parent.

algorithme de tri en tas

Vous trouverez ci-dessous un exemple de downcasting dans lequel les scénarios valides et invalides sont expliqués :

DowncastingExample.java

algorithmes de recherche binaire
 //Parent class class Parent { String name; // A method which prints the data of the parent class void showMessage() { System.out.println('Parent method is called'); } } // Child class class Child extends Parent { int age; // Performing overriding @Override void showMessage() { System.out.println('Child method is called'); } } public class Downcasting{ public static void main(String[] args) { Parent p = new Child(); p.name = 'Shubham'; // Performing Downcasting Implicitly //Child c = new Parent(); // it gives compile-time error // Performing Downcasting Explicitly Child c = (Child)p; c.age = 18; System.out.println(c.name); System.out.println(c.age); c.showMessage(); } } 

Sortir:

Upcasting et Downcasting en Java

Pourquoi avons-nous besoin du Upcasting et du Downcasting ?

En Java, nous utilisons rarement Diffusion ascendante . Nous l'utilisons lorsque nous devons développer un code qui ne traite que de la classe parent. Downcasting est utilisé lorsque nous devons développer un code qui accède aux comportements de la classe enfant.

Upcasting et Downcasting en Java

Différence entre la diffusion ascendante et la diffusion descendante

Voici les différences suivantes entre la diffusion ascendante et la diffusion descendante :

Oui Non Diffusion ascendante Downcasting
1. Un objet enfant est transtypé en un objet parent. La référence de l'objet de classe parent est transmise à la classe enfant.
2. Nous pouvons effectuer un Upcasting implicitement ou explicitement. Le downcasting implicite n’est pas possible.
3. Dans la classe enfant, nous pouvons accéder aux méthodes et variables de la classe parent. Les méthodes et variables des deux classes (parent et enfant) sont accessibles.
4. Nous pouvons accéder à certaines méthodes spécifiées de la classe enfant. Toutes les méthodes et variables des deux classes sont accessibles en effectuant un downcasting.
5. Parent p = nouveau Parent() Parent p = nouvel enfant()
Enfant c = (Enfant)p;