logo

Kovariáns visszatérési típusok Java nyelven

Ahogy a fül „felülüti” a dobhártyát, hamar rájövünk, hogy ez megtehető akár különböző adattípusok, akár egy függvénynek átadott argumentumok révén, amit a programozó kezdetben megtanult tanulás közben. polimorfizmus java-ban.  A JDK 5.0 előtt ez nem volt lehetséges felülbírálni egy metódus a visszatérési típus megváltoztatásával. Amikor felülírunk egy szülő osztály metódusát, a gyermekosztályban a felülbíráló metódus név argumentumtípusainak és visszatérési típusának pontosan meg kell egyeznie a szülő osztály metóduséval. A mindent felülmúló módszernek azt mondták állandó a visszatérési típus tekintetében. 

A Java 5.0-s verziótól kezdődően lehetséges, hogy a gyermekosztályban egy felülbíráló metódushoz különböző visszatérési típusok tartozzanak, de a gyermek visszatérési típusának a szülő visszatérési típusának altípusának kell lennie. Az uralkodó módszer válik változat a visszatérési típus tekintetében.
A kovariáns visszatérési típus a Liskov helyettesítési elve .

A geekek most biztosan azon tűnődnek, hogy miért érdemes használni, aminek az előnyeit a következők szerint soroljuk fel:



polcos kutyák
  • Segít elkerülni, hogy az osztályhierarchiában jelenlévő típusú castok összetéveszthetők legyenek, és így a kód olvasható, használható és karbantartható legyen.
  • A metódusok felülbírálásakor lehetőséget kapunk konkrétabb visszatérési típusok megadására.
  • Segítség a futásidejű ClassCastExceptions-kivételek megelőzésében a visszaküldések során

Jegyzet: Ha felcseréljük a Base és a Derived visszatérési típusait, akkor a fenti program nem működne. Kérem nézze meg ez program például.

Példa Két osztályt használnak a visszatérési típusokhoz

java olvassa el a csv-t
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();  } } 

Kimenet:  

Base fun() Derived fun()

Kvíz létrehozása