Een proces waarbij het ene gegevenstype naar het andere wordt geconverteerd, staat bekend als Typecasting En Upcasten En Downcasting is het type objecttypecasting. In Java kan het object ook worden getypeerd zoals de datatypes. Ouder En Kind objecten zijn twee soorten objecten. Er zijn dus twee soorten typecasting mogelijk voor een object, namelijk Ouder tot kind En Kind naar ouder of kan zeggen Upcasten En Downcasting .
In Java , kan het object ook worden getypeerd zoals de datatypes. Ouder En Onderliggende objecten zijn twee soorten objecten. Er zijn dus twee soorten typecasting mogelijk voor een object, namelijk Ouder tot kind En Kind naar ouder of kan zeggen Upcasten En Downcasting .
Typecasting wordt gebruikt om ervoor te zorgen of variabelen correct worden verwerkt door een functie of niet. In Upcasten En Downcasting , wij typen een onderliggend object voor een bovenliggend object En een ouderobject voor een onderliggend object tegelijkertijd. We kunnen Upcasting impliciet of expliciet uitvoeren, maar downcasting kan niet impliciet mogelijk zijn.
Laten we dieper ingaan op beide soorten objectcasting:
prestatietesten
1) Upcasting
Upcasten is een type objecttypecasting waarbij a kind-object wordt getypeerd naar a ouderklasseobject . Door Upcasting te gebruiken, hebben we eenvoudig toegang tot de variabelen en methoden van de bovenliggende klasse tot de onderliggende klasse. Hier hebben we geen toegang tot alle variabelen en de methode. We hebben slechts toegang tot enkele gespecificeerde variabelen en methoden van de onderliggende klasse. Upcasten staat ook wel bekend als Generalisatie En Verbreding .
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(); } }
Uitgang:
2) Downcasting
Upcasten is een ander type objecttypecasting. Bij Upcasting wijzen we een referentieobject van de bovenliggende klasse toe aan de onderliggende klasse. In Java kunnen we geen ouderklasse-referentieobject aan de onderliggende klasse toewijzen, maar als we downcasting uitvoeren, krijgen we geen compileerfout. Wanneer we het echter uitvoeren, gooit het de 'ClassCastException' . Het punt is nu: als downcasten niet mogelijk is in Java, waarom wordt het dan toegestaan door de compiler? In Java stellen sommige scenario's ons in staat downcasting uit te voeren. Hier wordt naar het subklasse-object verwezen door de bovenliggende klasse.
naamgeving volgens Java-conventies
Hieronder ziet u een voorbeeld van downcasting waarin zowel het geldige als het ongeldige scenario wordt uitgelegd:
DowncastingExample.java
java aaneengeschakelde tekenreeksen
//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(); } }
Uitgang:
Waarom hebben we upcasting en downcasting nodig?
In Java gebruiken we zelden Upcasten . We gebruiken het wanneer we een code moeten ontwikkelen die alleen betrekking heeft op de bovenliggende klasse. Downcasting wordt gebruikt wanneer we een code moeten ontwikkelen die toegang krijgt tot het gedrag van de kindklasse.
Verschil tussen upcasting en downcasting
Dit zijn de volgende verschillen tussen upcasting en downcasting:
Ja nee | Upcasten | Downcasting |
---|---|---|
1. | Een onderliggend object wordt getypeerd naar een ouderobject. | De referentie van het bovenliggende klasseobject wordt doorgegeven aan de onderliggende klasse. |
2. | Wij kunnen Upcasting impliciet of expliciet uitvoeren. | Impliciet downcasten is niet mogelijk. |
3. | In de onderliggende klasse hebben we toegang tot de methoden en variabelen van de bovenliggende klasse. | De methoden en variabelen van beide klassen (ouder en kind) zijn toegankelijk. |
4. | We hebben toegang tot enkele gespecificeerde methoden van de onderliggende klasse. | Alle methoden en variabelen van beide klassen zijn toegankelijk door downcasting uit te voeren. |
5. | Ouder p = nieuwe ouder() | Ouder p = nieuw kind() Kind c = (Kind)p; |