logo

Upcasting a Downcasting v Javě

Proces převodu jednoho datového typu na jiný je známý jako Typové odlévání a Upcasting a Downcasting je typ typového obsazení objektu. V Javě lze objekt také přetypovat jako datové typy. Rodič a Dítě objekty jsou dva typy objektů. Jsou tedy možné dva typy typového obsazení objektu, tj. Rodič dítěti a Dítě k rodiči nebo může říct Upcasting a Downcasting .

v Jáva , lze objekt také přetypovat jako datové typy. Rodič a Dětské předměty jsou dva typy objektů. Jsou tedy možné dva typy typového obsazení objektu, tj. Rodič dítěti a Dítě k rodiči nebo může říct Upcasting a Downcasting .

Typové odlévání se používá k zajištění toho, zda jsou proměnné správně zpracovány funkcí nebo ne. v Upcasting a Downcasting , typujeme podřízený objekt nadřazenému objektu a rodičovský objekt k podřízenému objektu zároveň. Upcasting můžeme provádět implicitně nebo explicitně, ale downcasting nemůže být implicitně možný.

Upcasting a Downcasting v Javě

Pojďme se ponořit do hloubky obou těchto typů odlévání objektů:

java programovací pole

1) Upcasting

Upcasting je typ typového obsazení objektů, ve kterém a dětský objekt je přetypován na a objekt rodičovské třídy . Pomocí Upcasting můžeme snadno přistupovat k proměnným a metodám rodičovské třídy k podřízené třídě. Zde nemáme přístup ke všem proměnným a metodě. Přistupujeme pouze k některým specifikovaným proměnným a metodám podřízené třídy. Upcasting je také známý jako Zobecnění a Rozšíření .

UpcastingExample.java

seznam států
 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(); } } 

Výstup:

Upcasting a Downcasting v Javě

2) Downcasting

Upcasting je dalším typem typového obsazení objektů. V Upcasting přiřadíme objekt odkazu rodičovské třídy k podřízené třídě. V Javě nemůžeme podřízené třídě přiřadit referenční objekt nadřazené třídy, ale pokud provedeme downcasting, neobjeví se žádná chyba při kompilaci. Když to však spustíme, vyhodí to 'ClassCastException' . Teď jde o to, že pokud downcasting není možný v Javě, tak proč to kompilátor umožňuje? V Javě nám některé scénáře umožňují provádět downcasting. Zde se na objekt podtřídy odkazuje nadřazená třída.

Níže je uveden příklad downcastingu, ve kterém jsou vysvětleny platné i neplatné scénáře:

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

Výstup:

Upcasting a Downcasting v Javě

Proč potřebujeme Upcasting a Downcasting?

V Javě používáme jen zřídka Upcasting . Používáme ho, když potřebujeme vyvinout kód, který se zabývá pouze nadřazenou třídou. Downcasting se používá, když potřebujeme vyvinout kód, který přistupuje k chování dětské třídy.

věk mia Khalifa
Upcasting a Downcasting v Javě

Rozdíl mezi Upcasting a Downcasting

Toto jsou následující rozdíly mezi Upcasting a Downcasting:

Ano ne Upcasting Downcasting
1. Podřízený objekt je přetypován na nadřazený objekt. Odkaz na nadřazený objekt třídy je předán podřízené třídě.
2. Upcasting můžeme provádět implicitně nebo explicitně. Implicitně downcasting není možný.
3. V podřízené třídě můžeme přistupovat k metodám a proměnným rodičovské třídy. Lze přistupovat k metodám a proměnným obou tříd (rodičovské i podřízené).
4. Můžeme přistupovat k některým specifikovaným metodám podřízené třídy. Ke všem metodám a proměnným obou tříd lze přistupovat provedením downcastingu.
5. Parent p = new Parent() Rodič p = nové dítě()
Dítě c = (Child)p;