logo

Upcasting i Downcasting u Javi

Proces pretvaranja jedne vrste podataka u drugu poznat je kao Tipiziranje i Upcasting i Spuštanje je tip priređivanja tipa objekta. U Javi, objekt također može biti tipiziran kao tipovi podataka. Roditelj i Dijete objekti su dvije vrste objekata. Dakle, postoje dvije vrste tipizacije moguće za objekt, tj. Roditelj Djetetu i Dijete roditelju ili može reći Upcasting i Spuštanje .

U Java , objekt se također može oblikovati kao i tipovi podataka. Roditelj i Dječji objekti su dvije vrste objekata. Dakle, postoje dvije vrste tipizacije moguće za objekt, tj. Roditelj Djetetu i Dijete roditelju ili može reći Upcasting i Spuštanje .

Tipiziranje koristi se kako bi se osiguralo da li funkcija ispravno obrađuje varijable ili ne. U Upcasting i Spuštanje , tipkamo podređeni objekt nadređenom objektu i roditeljski objekt podređenom objektu istovremeno. Možemo izvesti upcasting implicitno ili eksplicitno, ali downcasting ne može biti implicitno moguć.

Upcasting i Downcasting u Javi

Uronimo u dubinu obje ove vrste lijevanja objekata:

veličina pythona

1) Upcasting

Upcasting je tip pretvaranja tipa objekta u kojem a dječji objekt tipizira se na a objekt roditeljske klase . Korištenjem upcastinga možemo jednostavno pristupiti varijablama i metodama roditeljske klase klasi podređenoj. Ovdje ne pristupamo svim varijablama i metodi. Pristupamo samo nekim specificiranim varijablama i metodama klase dijete. Upcasting je također poznat kao Generalizacija i Proširenje .

UpcastingExample.java

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

Izlaz:

Upcasting i Downcasting u Javi

2) Spuštanje

Upcasting je još jedan tip pretvaranja tipa objekta. U upcastingu dodjeljujemo referentni objekt nadređene klase podređenoj klasi. U Javi, ne možemo dodijeliti referentni objekt nadređene klase podređenoj klasi, ali ako izvršimo downcasting, nećemo dobiti nikakvu pogrešku tijekom kompajliranja. Međutim, kada ga pokrenemo, on baca 'ClassCastException' . Poanta je sada ako downcasting nije moguć u Javi, zašto ga prevoditelj dopušta? U Javi nam neki scenariji dopuštaju prevođenje prema dolje. Ovdje se na objekt potklase upućuje roditeljska klasa.

U nastavku se nalazi primjer nižeg pretvaranja u kojem su objašnjeni važeći i nevažeći scenariji:

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

Izlaz:

Upcasting i Downcasting u Javi

Zašto nam treba upcasting i downcasting?

U Javi, rijetko koristimo Upcasting . Koristimo ga kada trebamo razviti kod koji se bavi samo roditeljskom klasom. Spuštanje se koristi kada trebamo razviti kod koji pristupa ponašanjima klase djeteta.

deterministički konačni automati
Upcasting i Downcasting u Javi

Razlika između upcastinga i downcastinga

Ovo su sljedeće razlike između upcastinga i downcastinga:

Da ne Upcasting Spuštanje
1. Podređeni objekt se tipizira u nadređeni objekt. Referenca objekta nadređene klase prosljeđuje se podređenoj klasi.
2. Upcasting možemo izvesti implicitno ili eksplicitno. Implicitno smanjivanje nije moguće.
3. U podređenoj klasi možemo pristupiti metodama i varijablama roditeljske klase. Može se pristupiti metodama i varijablama obje klase (roditelj i dijete).
4. Možemo pristupiti nekim specificiranim metodama klase dijete. Svim metodama i varijablama obje klase može se pristupiti izvođenjem downcastinga.
5. Roditelj p = novi roditelj() Roditelj p = novo dijete()
Dijete c = (Dijete)p;