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-tJava
// 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