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
0 oy
100 gösterim
Overload eden metodlar ile override eden metodlar arasındaki fark nedir? Polimorfizmayla alakaları nedir?
Genel Kavramlar kategorisinde (186 puan) sordu

1 cevap

0 oy

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.

(3.1k puan) cevapladı

İlgili sorular

0 oy
1 cevap 23 gösterim
0 oy
1 cevap 48 gösterim
48 gösterim 25 Nisan 2017 Genel Kavramlar kategorisinde Semih (118 puan) sordu
0 oy
1 cevap 62 gösterim
62 gösterim 25 Nisan 2017 Genel Kavramlar kategorisinde Semih (118 puan) sordu
0 oy
1 cevap 41 gösterim
41 gösterim 19 Aralık 2016 Genel Kavramlar kategorisinde tolga (1.6k puan) sordu
0 oy
1 cevap 135 gösterim
135 gösterim 12 Aralık 2016 Genel Kavramlar kategorisinde buzel (567 puan) sordu
...