logo

Upcasting e Downcasting in Java

Il processo di conversione di un tipo di dati in un altro è noto come Typecasting E Upcasting E Abbattimento è il tipo di typecasting dell'oggetto. In Java, l'oggetto può anche essere convertito in tipi come i tipi di dati. Genitore E Bambino gli oggetti sono due tipi di oggetti. Quindi, ci sono due tipi di typecasting possibili per un oggetto, vale a dire Genitore a figlio E Da bambino a genitore o può dire Upcasting E Abbattimento .

In Giava , l'oggetto può anche essere convertito in typecast come i tipi di dati. Genitore E Oggetti bambini sono due tipi di oggetti. Quindi, ci sono due tipi di typecasting possibili per un oggetto, vale a dire Genitore a figlio E Da bambino a genitore o può dire Upcasting E Abbattimento .

Typecasting viene utilizzato per garantire se le variabili vengono elaborate correttamente da una funzione o meno. In Upcasting E Abbattimento , digitiamo un oggetto figlio a un oggetto genitore E un oggetto genitore in un oggetto figlio contemporaneamente. Possiamo eseguire l'Upcasting in modo implicito o esplicito, ma il downcasting non può essere implicitamente possibile.

Upcasting e Downcasting in Java

Immergiamoci in profondità in entrambi questi tipi di casting di oggetti:

differenza simmetrica

1) Upcasting

Upcasting è un tipo di typecasting di oggetto in cui a oggetto figlio è tipizzato in a oggetto della classe genitore . Usando l'Upcasting, possiamo accedere facilmente alle variabili e ai metodi della classe genitore nella classe figlia. Qui non accediamo a tutte le variabili e al metodo. Accediamo solo ad alcune variabili e metodi specificati della classe figlia. Upcasting è anche conosciuto come Generalizzazione E Ampliamento .

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(); } } 

Produzione:

Upcasting e Downcasting in Java

2) Abbassamento

Upcasting è un altro tipo di typecasting di oggetti. Nell'Upcasting, assegniamo un oggetto di riferimento della classe genitore alla classe figlia. In Java, non possiamo assegnare un oggetto di riferimento della classe genitore alla classe figlia, ma se eseguiamo il downcasting, non otterremo alcun errore in fase di compilazione. Tuttavia, quando lo eseguiamo, lancia il file 'ClassCastException' . Ora il punto è se il downcasting non è possibile in Java, allora perché è consentito dal compilatore? In Java alcuni scenari ci consentono di eseguire il downcasting. Qui, l'oggetto sottoclasse viene riferito dalla classe genitore.

if else istruzioni java

Di seguito è riportato un esempio di downcasting in cui vengono spiegati sia gli scenari validi che quelli non validi:

DowncastingEsempio.java

algoritmo minimax
 //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(); } } 

Produzione:

Upcasting e Downcasting in Java

Perché abbiamo bisogno di Upcasting e Downcasting?

In Java, usiamo raramente Upcasting . Lo usiamo quando dobbiamo sviluppare un codice che si occupi solo della classe genitore. Abbattimento viene utilizzato quando dobbiamo sviluppare un codice che acceda ai comportamenti della classe figlia.

Upcasting e Downcasting in Java

Differenza tra Upcasting e Downcasting

Queste sono le seguenti differenze tra Upcasting e Downcasting:

Si No Upcasting Abbattimento
1. Un oggetto figlio viene convertito in un oggetto genitore. Il riferimento dell'oggetto della classe genitore viene passato alla classe figlia.
2. Possiamo eseguire l'Upcasting in modo implicito o esplicito. Il downcasting implicito non è possibile.
3. Nella classe figlia possiamo accedere ai metodi e alle variabili della classe genitore. È possibile accedere ai metodi e alle variabili di entrambe le classi (genitore e figlio).
4. Possiamo accedere ad alcuni metodi specificati della classe figlia. È possibile accedere a tutti i metodi e le variabili di entrambe le classi eseguendo il downcasting.
5. Genitore p = nuovo Genitore() Genitore p = nuovo figlio()
Figlio c = (Figlio)p;