Kai ausis atsitrenkia į ausies būgnelius, greitai sužinome, kad tai galima padaryti naudojant skirtingus duomenų tipus arba argumentus, perduodamus funkcijai, kurią programuotojas išmoko iš pradžių mokydamasis. polimorfizmas Java. Prieš JDK 5.0 tai nebuvo įmanoma nepaisyti metodas, keičiantis grąžinimo tipą. Kai nepaisome pagrindinės klasės metodo, pavadinimo argumentų tipai ir nepaisančio metodo grąžinimo tipas antrinėje klasėje turi būti visiškai tokie patys kaip ir pirminės klasės metodo. Buvo teigiama, kad pagrindinis metodas nekintamas atsižvelgiant į grąžinimo tipą.
„Java“ 5.0 ir naujesnėje versijoje antrinėje klasėje galimi skirtingi nepaisančio metodo grąžinimo tipai, tačiau vaiko grąžinimo tipas turi būti pirminio grąžinimo tipo potipis. Pagrindinis metodas tampa variantas atsižvelgiant į grąžinimo tipą.
Bendro varianto grąžinimo tipas pagrįstas Liskovo pakeitimo principas .
Dabar, geeks, jums tikriausiai kyla klausimas, kodėl jį naudoti, kurio privalumus išvardysime taip:
- Tai padeda išvengti klaidinančių tipų atmetimų, esančių klasės hierarchijoje, todėl kodą galima skaityti, naudoti ir prižiūrėti.
- Mes turime laisvę turėti konkretesnius grąžinimo tipus, kai nepaisome metodų.
- Pagalba užkertant kelią vykdymo laiko „ClassCastExceptions“ grąžinimo metu
Pastaba: Jei pakeisime grąžinimo tipus Base ir Derived, aukščiau pateikta programa neveiks. Žiūrėkite tai pavyzdžiui, programa.
Pavyzdys Dvi klasės naudojamos grąžinimo tipams
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(); } }
Išvestis:
Base fun() Derived fun()
Sukurti viktoriną