En process för att konvertera en datatyp till en annan kallas Typecasting och Uppsändning och Nedkastande är typen av objekttypecasting. I Java kan objektet också typcastas som datatyperna. Förälder och Barn objekt är två typer av objekt. Så det finns två typer av typcasting möjliga för ett objekt, dvs. Förälder till barn och Barn till förälder eller kan säga Uppsändning och Nedkastande .
I Java , kan objektet också typcastas som datatyperna. Förälder och Barnobjekt är två typer av föremål. Så det finns två typer av typcasting möjliga för ett objekt, dvs. Förälder till barn och Barn till förälder eller kan säga Uppsändning och Nedkastande .
Typecasting används för att säkerställa om variabler bearbetas korrekt av en funktion eller inte. I Uppsändning och Nedkastande , vi typcastar ett underordnat objekt till ett överordnat objekt och ett överordnat objekt till ett underordnat objekt samtidigt. Vi kan utföra Upcasting implicit eller explicit, men downcasting kan inte vara implicit möjligt.
Låt oss dyka in på djupet av båda dessa typer av objektgjutning:
vad är uri
1) Uppsändning
Uppsändning är en typ av objekttypecasting där en barnobjekt är typcast till en överordnat klassobjekt . Genom att använda Upcasting kan vi enkelt komma åt variablerna och metoderna för den överordnade klassen till den underordnade klassen. Här kommer vi inte åt alla variabler och metoden. Vi har endast tillgång till vissa specificerade variabler och metoder för barnklassen. Uppsändning är också känd som Generalisering och Vidgning .
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) Nedkastande
Uppsändning är en annan typ av objekttypcasting. I Upcasting tilldelar vi ett överordnat klassreferensobjekt till den underordnade klassen. I Java kan vi inte tilldela ett överordnat klassreferensobjekt till den underordnade klassen, men om vi utför nedsändning får vi inget kompileringsfel. Men när vi kör det, kastar det 'ClassCastException' . Nu är poängen om nedsändning inte är möjlig i Java, varför tillåts det då av kompilatorn? I Java tillåter vissa scenarier oss att utföra nedsändning. Här hänvisas underklassobjektet av den överordnade klassen.
minnesbyte
Nedan är ett exempel på nedsändning där både de giltiga och de ogiltiga scenarierna förklaras:
DowncastingExample.java
str till int
//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:
Varför behöver vi Upcasting och Downcasting?
I Java använder vi sällan Uppsändning . Vi använder det när vi behöver utveckla en kod som bara handlar om föräldraklassen. Nedkastande används när vi behöver utveckla en kod som kommer åt beteenden hos barnklassen.
Skillnaden mellan Upcasting och Downcasting
Det här är följande skillnader mellan Upcasting och Downcasting:
Ja Nej | Uppsändning | Nedkastande |
---|---|---|
1. | Ett underordnat objekt typcastas till ett överordnat objekt. | Referensen för det överordnade klassobjektet skickas till den underordnade klassen. |
2. | Vi kan utföra Upcasting implicit eller explicit. | Implicit nedsändning är inte möjlig. |
3. | I den underordnade klassen kan vi komma åt metoderna och variablerna för den överordnade klassen. | Metoderna och variablerna för både klasserna (förälder och barn) kan nås. |
4. | Vi kan komma åt vissa specificerade metoder för barnklassen. | Alla metoder och variabler för båda klasserna kan nås genom att utföra nedsändning. |
5. | Förälder p = ny förälder() | Förälder p = nytt barn() Barn c = (Barn)p; |