logo

Upcasting ir Downcasting Java

Vieno tipo duomenų konvertavimo į kitą procesas yra žinomas kaip Tipų siuntimas ir Naujinimas ir Nusileidimas yra objekto tipo perdavimo tipas. „Java“ sistemoje objektas taip pat gali būti perduodamas kaip duomenų tipai. Tėvas ir Vaikas objektai yra dviejų tipų objektai. Taigi, objektui galimi du tipai, t. y. Tėvas vaikui ir Vaikas Tėvams arba gali pasakyti Naujinimas ir Nusileidimas .

Į Java , objektas taip pat gali būti įvestas kaip duomenų tipai. Tėvas ir Vaikų objektai yra dviejų tipų objektai. Taigi, objektui galimi du tipai, t. y. Tėvas vaikui ir Vaikas Tėvams arba gali pasakyti Naujinimas ir Nusileidimas .

Tipų siuntimas naudojamas siekiant užtikrinti, ar funkcija tinkamai apdoroja kintamuosius, ar ne. Į Naujinimas ir Nusileidimas , mes rašome vaikas prieštarauja pirminiam objektui ir tėvas prieštarauja antriniam objektui tuo pačiu metu. Galime netiesiogiai arba aiškiai atlikti „Upcasting“, bet netiesiogiai nuleisti negalima.

Upcasting ir Downcasting Java

Pasinerkime į abu šiuos objektų liejimo tipus:

miegoti js

1) Pakeitimas

Naujinimas yra objektų tipo perdavimo tipas, kuriame a vaiko objektas yra spausdinamas į a pirminės klasės objektas . Naudodami Upcasting, galime lengvai pasiekti pirminės klasės kintamuosius ir metodus antrinei klasei. Čia mes nepasiekiame visų kintamųjų ir metodo. Prieiname tik kai kuriuos nurodytus antrinės klasės kintamuosius ir metodus. Naujinimas taip pat žinomas kaip Apibendrinimas ir Plečiantis .

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

Išvestis:

Upcasting ir Downcasting Java

2) Sumažėjimas

Naujinimas yra kitas objektų tipo perdavimo tipas. Naudojant Upcasting, antrinei klasei priskiriame pagrindinės klasės nuorodos objektą. „Java“ negalime priskirti pirminės klasės nuorodos objekto antrinei klasei, bet jei atliksime sumažinimą, negausime kompiliavimo laiko klaidos. Tačiau kai mes jį paleidžiame, jis išmeta „ClassCastException“ . Dabar esmė ta, kad jei „Java“ neįmanoma sumažinti nuleidimo, kodėl tai leidžia kompiliatorius? „Java“ programoje kai kurie scenarijai leidžia atlikti sumažinimą. Čia poklasio objektą nurodo pagrindinė klasė.

gamyklos dizaino modelis

Toliau pateikiamas sumažinimo pavyzdys, kuriame paaiškinami galiojantys ir negaliojantys scenarijai:

DowncastingExample.java

java eilutė
 //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(); } } 

Išvestis:

Upcasting ir downcasting Java

Kodėl mums reikia aukštyn ir žemyn?

Java mes retai naudojame Naujinimas . Mes naudojame jį, kai turime sukurti kodą, kuris būtų susijęs tik su pirmine klase. Nusileidimas naudojamas, kai mums reikia sukurti kodą, kuris pasiektų vaikų klasės elgesį.

Upcasting ir downcasting Java

Skirtumas tarp padidinimo ir sumažinimo

Tai yra šie skirtumai tarp padidinimo ir sumažinimo:

Taip ne Naujinimas Nusileidimas
1. Antrinis objektas perduodamas pirminiam objektui. Pirminės klasės objekto nuoroda perduodama antrinei klasei.
2. Galime atlikti „Upcasting“ netiesiogiai arba aiškiai. Netiesioginis sumažinimas neįmanomas.
3. Vaikų klasėje galime pasiekti pirminės klasės metodus ir kintamuosius. Galima pasiekti abiejų klasių (tėvo ir vaiko) metodus ir kintamuosius.
4. Galime pasiekti kai kuriuos nurodytus vaikų klasės metodus. Visus abiejų klasių metodus ir kintamuosius galima pasiekti atliekant sumažinimą.
5. Tėvų p = naujas Tėvas () Tėvo p = naujas vaikas ()
Vaikas c = (Vaikas)p;