Kad auss ietriecas bungādiņās, mēs ātri uzzinām, ka to var izdarīt, izmantojot dažādus datu tipus vai argumentus, kas tiek nodoti funkcijai, ko programmētājs iemācījās sākotnēji, mācoties. polimorfisms Java. Pirms JDK 5.0 tas nebija iespējams ignorēt metode, mainot atgriešanas veidu. Ignorējot vecākklases metodi, nosaukuma argumentu tipiem un ignorējošās metodes atgriešanas veidam bērnklasē ir jābūt tieši tādiem pašiem kā vecākklases metodei. Tika teikts, ka galvenā metode ir nemainīgs attiecībā uz atgriešanas veidu.
Java versijā 5.0 un jaunākās versijās ir iespējams izmantot dažādus atgriešanas veidus bērnklasē dominējošai metodei, taču bērna atgriešanas veidam ir jābūt vecāka atgriešanas veida apakštipam. Galvenā metode kļūst variants attiecībā uz atgriešanas veidu.
Kovarianta atgriešanas veids ir balstīts uz Liskova aizstāšanas princips .
Tagad geeks jums noteikti jābrīnās par to, kāpēc to izmantot, un mēs uzskaitīsim šādas priekšrocības:
- Tas palīdz izvairīties no sajaukšanas klases hierarhijā esošajiem tipiem un tādējādi padara kodu lasāmu lietojamu un uzturējamu.
- Mēs varam izvēlēties konkrētākus atgriešanas veidus, kad tiek ignorētas metodes.
- Palīdziet novērst izpildlaika ClassCastExceptions atgriešanas laikā
Piezīme: Ja mēs apmainītos ar atgriešanas veidiem Base un Derived, tad iepriekš minētā programma nedarbosies. Lūdzu, skatiet šis programma, piemēram.
Piemērs Atgriešanas veidiem tiek izmantotas divas klases
Java// Java Program to Demonstrate Different Return Types // if Return Type in Overridden method is Sub-type // Class 1 class A { } // Class 2 class B extends A { } // Class 3 // Helper class (Base class) class Base { // Method of this class of class1 return type A fun() { // Display message only System.out.println('Base fun()'); return new A(); } } // Class 4 // Helper class extending above class class Derived extends Base { // Method of this class of class1 return type B fun() { // Display message only System.out.println('Derived fun()'); return new B(); } } // Class 5 // Main class public class GFG { // Main driver method public static void main(String args[]) { // Creating object of class3 type Base base = new Base(); // Calling method fun() over this object // inside main() method base.fun(); // Creating object of class4 type Derived derived = new Derived(); // Again calling method fun() over this object // inside main() method derived.fun(); } }
Izvade:
Base fun() Derived fun()
Izveidojiet viktorīnu