Коли вухо торкається барабанних перетинок, ми швидко дізнаємося, що це можна зробити через різні типи даних або аргументи, передані функції, про що програміст дізнався спочатку під час навчання поліморфізм в java. До JDK 5.0 це було неможливо перевизначити метод шляхом зміни типу повернення. Коли ми перевизначаємо метод батьківського класу, типи аргументів імені та тип повернення методу перевизначення в дочірньому класі мають бути точно такими ж, як і в методі батьківського класу. Говорили, що основний метод незмінний щодо типу повернення.
Починаючи з версії Java 5.0, можна мати різні типи повернення для основного методу в дочірньому класі, але дочірній тип має бути підтипом батьківського типу. Переважним методом стає варіант щодо типу повернення.
Коваріантний тип повернення заснований на Принцип підстановки Ліскова .
1 мільйон скільки 0
Тепер, фанати, ви, напевно, задаєтеся питанням, навіщо використовувати, для яких ми перерахуємо переваги таким чином:
- Це допомагає уникнути плутанини з приведеннями типів, наявними в ієрархії класів, і таким чином робить код зручним для читання та обслуговування.
- Ми маємо свободу мати більш конкретні типи повернення під час перевизначення методів.
- Допомога в запобіганні ClassCastExceptions під час виконання під час повернення
Примітка: Якщо ми поміняємо типи повернення Base і Derived, вищезгадана програма не працюватиме. Будь ласка, подивіться це програма наприклад.
приклад Два класи, що використовуються для типів повернення
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(); } }
Вихід:
Base fun() Derived fun()
Створіть вікторину