logo

Kovariantu atgriešanās veidi Java

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