Merhabalar arkadaşlar, Sitemizi programlama ile ilgilenen bütün arkadaşlarımızın türkçe içerik konusunda çektiği sıkıntılar düşünülerek soru/cevap şeklinde bir etkileşimde bulunabilmesi için kurduk. Umuyoruz hepimiz için güzel bir deneyim olur. Hasscript Ekibi

Sorunuz mu var? Belki de çoktan soruldu..

0
Overload eden metodlar ile override eden metodlar arasındaki fark nedir?

Açık 1 Cevaplar 35 Gösterim Genel Kavramlar
Overload eden metodlar ile override eden metodlar arasındaki fark nedir? Polimorfizmayla alakaları nedir?

1 cevap

0

Overload demek aşırı yükleme demek. Bir metodunuz var ve aynı metodu birden farklı şekilde çalışacak şekilde tekrar farklı parametrelerle yazmaya method overload (metod aşırı yükleme) deniyor. Yani selam veren bir metodunuz var  void selam() bunun yanında bir tane daha metod olsun o da selam versin ama isimle beraber versin derseniz, C gibi bir programlama dilinde void isimleSelam gibi bir fonksiyon yazarsınız, java da ise void selam(String isim) diye metod yazabilirsiniz. Aynı şekilde isimli selam olsun ek olarak bir de saate göre selam değişsin derseniz bu sefer java'da void selam(String isim, Time saat) diyebilirsiniz. Bu durum size aynı metod ismini farklı şekillerde kullanma seçeneği verir.

Kısa bir özetle

    class XX{
         void selam() {....}
         void selam(String isim){....}
         void selam(String isim, Time saat) {......}
    }

Şeklinde üç farklı metodu tek isimle tanımlayabiliriz. Daha fazla da olabilir. Düşülmesi gereken tek şey tek parametreli birden fazla tanımlayamayız. Yani selam(String isim) ve selam(Time saat) aynı anda tanımlanamaz. Derleyici metodların farklı olduğunu metodun imzasından anlar ve bu ikisinin imzası derleyici için aynıdır.

Metod override ise bununla pek alakalı değildir. En basit anlamda: atadan gelen bir metodun evlatda değişikliğe uğramasıdır. Yani ata sınıfta da selam diye bir metod var. Bu metod çocuk sınıfa otomatik geçecektir. Ama çocuk derse ki ben babam gibi selam vermeyeceğim kendime özel bir selamım olacak, o fonksiyon çocuk sınıfta yeniden yazılır. Buna da override deniyor.
Örnek olarak

class YY extends XX {
    void selam() {
        print("başka şekilde bir selam");
    }
}

verilebilir. Yukarıdaki XX sınıfnda bir selam metodu vardı kalıtlama yaptığımızda YY sınıfına o metod zaten gelecek. YY sınıfında metod yeniden yazıldı, override yapılmış oldu.

9 Aralık 2017 kenan (2,835 puan) cevapladı
...