search
Giriş
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
7.2k gösterim
Overload eden metodlar ile override eden metodlar arasındaki fark nedir? Polimorfizmayla alakaları nedir?
Genel Kavramlar kategorisinde 193 puan

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.

6.2k puan

İlgili sorular

0 oy
1 cevap 200 gösterim
200 gösterim
git status komutuyla durumumuza kontrol ettiğimiz zaman modified ve stagged diye iki tane bölüm görünüyor. Bu bölümlerin birbirinden farkı nedir? Neden direk modified görmüyorum bir de staged görüyorum.
29 Haziran 2017 Genel Kavramlar kategorisinde kenan 6.2k puan sordu
0 oy
1 cevap 1K gösterim
1K gösterim 25 Nisan 2017 Genel Kavramlar kategorisinde Semih 120 puan sordu
0 oy
1 cevap 1.8K gösterim
1.8K gösterim 25 Nisan 2017 Genel Kavramlar kategorisinde Semih 120 puan sordu
0 oy
1 cevap 560 gösterim
560 gösterim
Bir yerde okurken Native ve Spring JDBC diye iki farklı terim olarak kullanıldığını gördüm. Bunların farkları nelerdir? Hangi durumlarda hangileri tercih edelim
19 Aralık 2016 Genel Kavramlar kategorisinde tolgacelik.art 2.0k puan sordu
0 oy
1 cevap 1.1K gösterim
1.1K gösterim
Semafor ile mutex arasındaki fark nedir?
12 Aralık 2016 Genel Kavramlar kategorisinde buzel 604 puan sordu