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