Kulak, kulak zarlarına 'ağır basarken' çarptığında, bunun farklı veri türleri veya bir programcının başlangıçta öğrenirken öğrendiği bir işleve aktarılan argümanlar sayesinde yapılabileceğini hemen anlarız. Java'da polimorfizm. JDK 5.0'dan önce bu mümkün değildi. geçersiz kılma dönüş türünü değiştirerek bir yöntem. Bir ebeveyn sınıf yöntemini geçersiz kıldığımızda, alt sınıftaki geçersiz kılma yönteminin isim argümanı türleri ve dönüş türü, ebeveyn sınıf yöntemiyle tamamen aynı olmalıdır. Geçersiz kılma yönteminin olduğu söylendi değişmez dönüş türüne göre.
Java sürüm 5.0'dan itibaren, alt sınıfta geçersiz kılma yöntemi için farklı dönüş türlerine sahip olmak mümkündür ancak çocuğun dönüş türü, ebeveynin dönüş türünün bir alt türü olmalıdır. Geçersiz kılma yöntemi olur değişken dönüş türüne göre.
Ortak değişken getiri türü aşağıdakilere dayanmaktadır: Liskov ikame ilkesi .
Şimdi meraklılar, avantajlarını aşağıdaki gibi sıralayacağımız neden kullanılacağını merak ediyor olmalısınız:
- Sınıf hiyerarşisinde mevcut olan tür dönüşümlerinin kafa karıştırıcı olmasını önlemeye yardımcı olur ve böylece kodu okunabilir, kullanılabilir ve bakımı yapılabilir hale getirir.
- Yöntemleri geçersiz kılarken daha spesifik getiri türlerine sahip olma özgürlüğüne sahip oluyoruz.
- İadelerde çalışma zamanı ClassCastExceptions'ın engellenmesine yardımcı olun
Not: Base ve Derived dönüş türlerini değiştirirsek yukarıdaki program çalışmaz. Lütfen bakın Bu örneğin program.
tojson java
Örnek Dönüş türleri için kullanılan iki sınıf
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(); } }
Çıkış:
Base fun() Derived fun()
Test Oluştur