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ć.
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:
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:
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
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; |