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.