Az egyik adattípus másikra konvertálásának folyamatát ún Typecasting és Upcasting és Lehúzás az objektumtípusküldés típusa. A Java-ban az objektum is típusolvasható, mint az adattípusok. Szülő és Gyermek az objektumok kétféle objektum. Tehát egy objektum esetében kétféle típusú szövegírás lehetséges, azaz Szülőtől gyermekig és Gyermek a szülőnek vagy mondhatja Upcasting és Lehúzás .
Ban ben Jáva , az objektum az adattípusokhoz hasonlóan típusolvasható is. Szülő és Gyermek tárgyak kétféle objektumról van szó. Tehát egy objektum esetében kétféle típusú szövegírás lehetséges, azaz Szülőtől gyermekig és Gyermek a szülőnek vagy mondhatja Upcasting és Lehúzás .
Typecasting arra szolgál, hogy megbizonyosodjon arról, hogy egy függvény megfelelően feldolgozza-e a változókat vagy sem. Ban ben Upcasting és Lehúzás , gépelünk egy utódobjektum egy szülőobjektumhoz és szülőobjektum egy gyermekobjektumhoz egyidejűleg. Az Upcastingot implicit módon vagy explicit módon végezhetjük, de a downcasting implicit módon nem lehetséges.
Merüljünk el mélyebben mindkét ilyen típusú tárgyöntésben:
bájtok a python karakterlánchoz
1) Upcasting
Upcasting az objektumtípus-casting egyik típusa, amelyben a gyermek objektum típusba van írva a szülő osztály objektum . Az Upcasting használatával könnyen elérhetjük a szülő osztály változóit és metódusait a gyermekosztályhoz. Itt nem férünk hozzá az összes változóhoz és a metódushoz. A gyermekosztálynak csak néhány meghatározott változójához és metódusához férünk hozzá. Upcasting néven is ismert Általánosítás és Szélesedés .
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(); } }
Kimenet:
2) Downcasting
Upcasting az objektumtípus-küldés egy másik típusa. Az Upcastingban egy szülő osztály hivatkozási objektumot rendelünk a gyermekosztályhoz. Java-ban nem rendelhetünk szülő osztály hivatkozási objektumot a gyermekosztályhoz, de ha downcastingot hajtunk végre, akkor nem kapunk fordítási idejű hibát. Amikor azonban futtatjuk, dobja a „ClassCastException” . Na most az a lényeg, hogy ha Java-ban nem lehetséges a downcasting, akkor miért engedi meg a fordító? Java-ban bizonyos forgatókönyvek lehetővé teszik számunkra a downcasting végrehajtását. Itt az alosztály objektumra a szülőosztály hivatkozik.
java lista üres
Az alábbiakban egy példa látható a downcastingra, amelyben mind az érvényes, mind az érvénytelen forgatókönyvet ismertetjük:
DowncastingExample.java
hogyan alakítsuk át az int-t string-be 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(); } }
Kimenet:
Miért van szükségünk Upcasting és Downcasting?
Java nyelven ritkán használjuk Upcasting . Akkor használjuk, ha olyan kódot kell kifejlesztenünk, amely csak a szülő osztállyal foglalkozik. Lehúzás akkor használatos, ha olyan kódot kell kifejlesztenünk, amely hozzáfér a gyermekosztály viselkedéseihez.
Az Upcasting és a Downcasting közötti különbség
A következő különbségek az Upcasting és a Downcasting között:
Igen nem | Upcasting | Lehúzás |
---|---|---|
1. | Az utódobjektumot a rendszer egy szülőobjektumhoz írja át. | A szülő osztály objektum hivatkozása átadásra kerül a gyermekosztálynak. |
2. | Az Upcasting-ot implicit vagy explicit módon végezhetjük. | Implicit Downcasting nem lehetséges. |
3. | A gyermek osztályban a szülő osztály metódusait, változóit érhetjük el. | Mindkét osztály (szülő és gyermek) metódusai és változói elérhetők. |
4. | Hozzáférhetünk a gyermekosztály néhány meghatározott metódusához. | Mindkét osztály összes metódusa és változója elérhető downcasting végrehajtásával. |
5. | Szülő p = új szülő() | Szülő p = új gyermek() Gyermek c = (Child)p; |