En proces med at konvertere en datatype til en anden er kendt som Typecasting og Upcasting og Nedkastende er typen af objekttypecasting. I Java kan objektet også typecastes ligesom datatyperne. Forælder og Barn objekter er to typer objekter. Så der er to typer typecasting mulig for et objekt, dvs. Forælder til Barn og Barn til Forælder eller kan sige Upcasting og Nedkastende .
I Java , kan objektet også typecastes ligesom datatyperne. Forælder og Barnegenstande er to typer objekter. Så der er to typer typecasting mulig for et objekt, dvs. Forælder til Barn og Barn til Forælder eller kan sige Upcasting og Nedkastende .
Typecasting bruges til at sikre, om variabler behandles korrekt af en funktion eller ej. I Upcasting og Nedkastende , vi typecaster et underordnet objekt til et overordnet objekt og et overordnet objekt til et underordnet objekt samtidigt. Vi kan udføre Upcasting implicit eller eksplicit, men downcasting kan ikke implicit være mulig.
Lad os dykke ned i begge disse typer objektstøbning:
hashmap
1) Upcasting
Upcasting er en type objekttypecasting, hvor en børneobjekt er typecastet til en overordnet klasseobjekt . Ved at bruge Upcasting kan vi nemt få adgang til forældreklassens variabler og metoder til underklassen. Her har vi ikke adgang til alle variablerne og metoden. Vi har kun adgang til nogle specificerede variabler og metoder for børneklassen. Upcasting er også kendt som Generalisering og Udvidelse .
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(); } }
Produktion:
2) Nedkastning
Upcasting er en anden type objekttypecasting. I Upcasting tildeler vi et overordnet klassereferenceobjekt til den underordnede klasse. I Java kan vi ikke tildele et overordnet klassereferenceobjekt til den underordnede klasse, men hvis vi udfører downcasting, vil vi ikke få nogen kompileringsfejl. Men når vi kører det, kaster det 'ClassCastException' . Nu er pointen, hvis downcasting ikke er muligt i Java, hvorfor er det så tilladt af compileren? I Java giver nogle scenarier os mulighed for at udføre downcasting. Her henvises underklasseobjektet af den overordnede klasse.
Juster billedet med css
Nedenfor er et eksempel på downcasting, hvor både de gyldige og de ugyldige scenarier er forklaret:
DowncastingExample.java
liste på java
//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(); } }
Produktion:
Hvorfor har vi brug for Upcasting og Downcasting?
I Java bruger vi sjældent Upcasting . Vi bruger det, når vi skal udvikle en kode, der kun omhandler forældreklassen. Nedkastende bruges, når vi skal udvikle en kode, der tilgår børneklassens adfærd.
Forskellen mellem Upcasting og Downcasting
Disse er følgende forskelle mellem Upcasting og Downcasting:
Ja Nej | Upcasting | Nedkastende |
---|---|---|
1. | Et underordnet objekt typecastes til et overordnet objekt. | Referencen for det overordnede klasseobjekt videregives til den underordnede klasse. |
2. | Vi kan udføre Upcasting implicit eller eksplicit. | Implicit downcasting er ikke mulig. |
3. | I børneklassen kan vi få adgang til forældreklassens metoder og variable. | Metoderne og variablerne for både klasserne (forælder og barn) kan tilgås. |
4. | Vi kan få adgang til nogle specificerede metoder i børneklassen. | Alle metoder og variabler for begge klasser kan tilgås ved at udføre downcasting. |
5. | Overordnet p = ny overordnet() | Forælder p = nyt barn() Barn c = (Barn)p; |