logo

Upcasting i Downcasting w Javie

Proces konwersji jednego typu danych na inny nazywa się Typowanie I Podnoszące na duchu I Przygnębiający to typ rzutowania obiektów. W Javie obiekt można również rzutować na typ, podobnie jak typy danych. Rodzic I Dziecko obiekty to dwa typy obiektów. Zatem w przypadku obiektu możliwe są dwa typy rzutowania tekstu, tj. Rodzic do Dziecka I Dziecko do rodzica lub może powiedzieć Podnoszące na duchu I Przygnębiający .

W Jawa , obiekt można również rzutować na typ, podobnie jak typy danych. Rodzic I Obiekty podrzędne to dwa rodzaje obiektów. Zatem w przypadku obiektu możliwe są dwa typy rzutowania tekstu, tj. Rodzic do Dziecka I Dziecko do rodzica lub może powiedzieć Podnoszące na duchu I Przygnębiający .

Typowanie służy do sprawdzenia, czy zmienne są poprawnie przetwarzane przez funkcję, czy nie. W Podnoszące na duchu I Przygnębiający , typujemy obiektu podrzędnego do obiektu nadrzędnego I obiektu nadrzędnego na obiekt podrzędny jednocześnie. Możemy wykonać rzutowanie w górę w sposób ukryty lub jawny, ale rzutowanie w dół nie może być możliwe w sposób dorozumiany.

Upcasting i Downcasting w Javie

Zagłębmy się w oba rodzaje rzutowania obiektów:

selektor dokumentu.zapytania

1) Podnoszący na duchu

Podnoszące na duchu to rodzaj rzutowania obiektów, w którym a obiekt podrzędny jest typowany na a obiekt klasy nadrzędnej . Korzystając z upcastingu, możemy łatwo uzyskać dostęp do zmiennych i metod klasy nadrzędnej do klasy podrzędnej. Tutaj nie mamy dostępu do wszystkich zmiennych i metody. Mamy dostęp tylko do niektórych określonych zmiennych i metod klasy potomnej. Podnoszące na duchu jest również znany jako Uogólnienie I Poszerzanie .

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

Wyjście:

Upcasting i Downcasting w Javie

2) Przygnębienie

Podnoszące na duchu to inny rodzaj rzutowania obiektów. W Upcastingu przypisujemy obiekt referencyjny klasy nadrzędnej do klasy podrzędnej. W Javie nie możemy przypisać obiektu referencyjnego klasy nadrzędnej do klasy podrzędnej, ale jeśli wykonamy rzutowanie w dół, nie otrzymamy żadnego błędu w czasie kompilacji. Jednak gdy go uruchomimy, wyrzuca plik „Wyjątek ClassCast” . Chodzi o to, że jeśli w Javie downcasting nie jest możliwy, to dlaczego kompilator na to zezwala? W Javie niektóre scenariusze pozwalają nam na wykonanie downcastingu. Tutaj obiekt podklasy jest odwoływany przez klasę nadrzędną.

sqrt matematyka Java

Poniżej znajduje się przykład downcastingu, w którym wyjaśniono zarówno prawidłowy, jak i nieprawidłowy scenariusz:

DowncastingExample.java

wiek Hrithika Roshana
 //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(); } } 

Wyjście:

Upcasting i Downcasting w Javie

Dlaczego potrzebujemy wzlotów i upadków?

W Javie rzadko używamy Podnoszące na duchu . Używamy go, gdy musimy opracować kod, który dotyczy tylko klasy nadrzędnej. Przygnębiający jest używany, gdy musimy opracować kod uzyskujący dostęp do zachowań klasy podrzędnej.

Upcasting i Downcasting w Javie

Różnica między wznoszeniem a obniżaniem

Oto następujące różnice między przesyłaniem w górę i w dół:

Tak nie Podnoszące na duchu Przygnębiający
1. Obiekt podrzędny jest rzutowany na obiekt nadrzędny. Odwołanie do obiektu klasy nadrzędnej jest przekazywane do klasy podrzędnej.
2. Upcasting możemy wykonać w sposób ukryty lub jawny. W sposób dorozumiany Downcasting nie jest możliwy.
3. W klasie potomnej mamy dostęp do metod i zmiennych klasy nadrzędnej. Można uzyskać dostęp do metod i zmiennych obu klas (rodzica i dziecka).
4. Możemy uzyskać dostęp do niektórych określonych metod klasy potomnej. Dostęp do wszystkich metod i zmiennych obu klas można uzyskać, wykonując rzutowanie w dół.
5. Rodzic p = nowy Rodzic() Rodzic p = nowe Dziecko()
Dziecko c = (Dziecko) p;