Un proces de conversie a unui tip de date în altul este cunoscut ca Tipare și Upcasting și Downcasting este tipul de tipărire a obiectelor. În Java, obiectul poate fi, de asemenea, tipizat ca și tipurile de date. Mamă și Copil obiectele sunt două tipuri de obiecte. Deci, există două tipuri de tipare posibile pentru un obiect, și anume, De la părinte la copil și De la copil la părinte sau poate spune Upcasting și Downcasting .
În Java , obiectul poate fi, de asemenea, tipizat ca și tipurile de date. Mamă și Obiecte pentru copii sunt două tipuri de obiecte. Deci, există două tipuri de tipare posibile pentru un obiect, și anume, De la părinte la copil și De la copil la părinte sau poate spune Upcasting și Downcasting .
Tipare este utilizat pentru a asigura dacă variabilele sunt procesate corect de către o funcție sau nu. În Upcasting și Downcasting , dactilografiam un obiect copil la un obiect părinte și un obiect părinte la un obiect copil simultan. Putem efectua Upcasting implicit sau explicit, dar downcasting nu poate fi implicit posibil.
Să ne aprofundăm în ambele tipuri de turnare de obiecte:
comuta metoda java
1) Upcasting
Upcasting este un tip de tipărire a obiectelor în care a obiect copil este tipărit la a obiect clasa părinte . Folosind Upcasting-ul, putem accesa cu ușurință variabilele și metodele clasei părinte la clasa copil. Aici, nu accesăm toate variabilele și metoda. Accesăm doar câteva variabile și metode specificate ale clasei copil. Upcasting mai este cunoscut ca Generalizare și Lărgirea .
UpcastingExample.java
compoziția relației
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(); } }
Ieșire:
2) Downcasting
Upcasting este un alt tip de tipărire a obiectelor. În Upcasting, atribuim un obiect de referință al clasei părinte clasei copil. În Java, nu putem aloca un obiect de referință a clasei părinte clasei copil, dar dacă efectuăm downcasting, nu vom primi nicio eroare de compilare. Cu toate acestea, când îl rulăm, aruncă „ClassCastException” . Ideea este că dacă downcastingul nu este posibil în Java, atunci de ce este permisă de compilator? În Java, unele scenarii ne permit să efectuăm downcasting. Aici, obiectul subclasă este referit de către clasa părinte.
Mai jos este un exemplu de downcasting în care sunt explicate atât scenariul valid, cât și cel nevalid:
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(); } }
Ieșire:
De ce avem nevoie de Upcasting și Downcasting?
În Java, folosim rar Upcasting . Îl folosim atunci când trebuie să dezvoltăm un cod care se ocupă doar de clasa părinte. Downcasting este folosit atunci când trebuie să dezvoltăm un cod care să acceseze comportamentele clasei copil.
actor govinda
Diferența dintre Upcasting și Downcasting
Acestea sunt următoarele diferențe între Upcasting și Downcasting:
Da nu | Upcasting | Downcasting |
---|---|---|
1. | Un obiect copil este transformat într-un obiect părinte. | Referința obiectului clasei părinte este transmisă clasei copil. |
2. | Putem efectua Upcasting implicit sau explicit. | Reducerea implicită nu este posibilă. |
3. | În clasa copil, putem accesa metodele și variabilele clasei părinte. | Metodele și variabilele ambelor clase (părinte și copil) pot fi accesate. |
4. | Putem accesa unele metode specificate ale clasei child. | Toate metodele și variabilele ambelor clase pot fi accesate prin efectuarea downcasting-ului. |
5. | Parent p = Parent nou() | Părinte p = Copil nou () Copil c = (Copil)p; |