Overload Ve Override Nedir ?

Duru

New member
Overload ve Override Nedir?

Overload ve override, programlama dünyasında sıklıkla karşılaşılan kavramlardır. Bu kavramlar, özellikle nesne yönelimli programlama (OOP) alanında kullanılırlar. Her ikisi de bir sınıfın davranışlarını veya özelliklerini değiştirmek için kullanılır, ancak farklı şekillerde çalışırlar. Bu makalede overload ve override kavramlarını detaylı bir şekilde inceleyeceğiz.

[1] Overload Nedir?

Overload, aşırı yükleme anlamına gelir. Bu terim, bir programlama dilinde aynı isimde birden fazla fonksiyon veya metod tanımlama işlemine verilen isimdir. Ancak bu metotlar veya fonksiyonlar, parametre listeleri veya türleri açısından farklılık göstermelidir. Yani aynı isimde farklı parametrelerle birden fazla fonksiyon tanımlanabilir.

Overload, fonksiyonların veya metodların aynı ismi taşımasına rağmen farklı işlevlere sahip olmalarını sağlar. Bu, aynı işlemi farklı veri türleri veya parametrelerle uygulamak istediğimizde oldukça yararlıdır. Örneğin, toplama işlemi yapan bir fonksiyonun bir tamsayılar dizisi için farklı bir toplama fonksiyonu ile bir ondalık sayılar dizisi için farklı bir toplama fonksiyonu olabilir.

Özetle, overload, aynı isimde farklı parametrelerle birden fazla fonksiyon veya metod tanımlanmasına olanak tanır.

[2] Override Nedir?

Override, geçersiz kılma veya yeniden tanımlama anlamına gelir. Bu terim, bir alt sınıfın bir üst sınıftan miras aldığı bir metodun, alt sınıfta farklı davranışlara sahip olması durumunu ifade eder. Yani, alt sınıf, üst sınıfta tanımlanan bir metodu kendi ihtiyaçlarına göre tekrar tanımlayabilir ve bu sayede üst sınıfta tanımlanan davranışı geçersiz kılabilir.

Override, nesne yönelimli programlamada çok önemlidir çünkü bu şekilde sınıflar arasında ilişkiler kurulabilir ve sınıfların davranışları esnek bir şekilde değiştirilebilir. Bu sayede kodun yeniden kullanılabilirliği artar ve uygulama tasarımı daha modüler hale gelir.

Özetle, override, bir alt sınıfın bir üst sınıftan miras aldığı bir metodu kendi ihtiyaçlarına göre yeniden tanımlamasına olanak tanır.

[3] Overload ve Override Arasındaki Farklar

Overload ve override, benzer gibi görünseler de farklı kavramlardır ve farklı amaçlar için kullanılırlar. İşte overload ve override arasındaki ana farklar:

1. **Amaçları:** Overload, aynı isimde farklı parametrelerle birden fazla fonksiyon veya metod tanımlamak için kullanılırken, override, bir alt sınıfın bir üst sınıftan miras aldığı bir metodu kendi ihtiyaçlarına göre yeniden tanımlamak için kullanılır.

2. **Kullanım Yeri:** Overload genellikle aynı sınıf içinde kullanılırken, override ise genellikle alt sınıfların üst sınıflardan miras aldığı metodları yeniden tanımlamak için kullanılır.

3. **Parametreler:** Overload'da fonksiyonlar veya metodlar farklı parametrelerle çağrılırken, override'da aynı imza (parametre listesi) kullanılır ve sadece davranış farklılığı sağlanır.

4. **Statik ve Dinamik Bağlama:** Overload, derleme zamanında (static binding) belirlenirken, override ise çalışma zamanında (dynamic binding) belirlenir.

[4] Overload ve Override Örnekleri

Şimdi, overload ve override kavramlarını daha iyi anlamak için birkaç örnek inceleyelim:

**Overload Örneği:**

```python

class Calculator:

def add(self, x, y):

return x + y

def add(self, x, y, z):

return x + y + z

calc = Calculator()

print(calc.add(2, 3)) # Hata! İkinci add fonksiyonu çağrılmaz.

print(calc.add(2, 3, 4)) # Sonuç: 9

```

Yukarıdaki örnekte, `Calculator` sınıfında iki farklı `add` metodu tanımlanmıştır. İlk metot iki parametre alırken, ikincisi üç parametre alır. Bu nedenle, aynı isimde farklı parametrelerle iki farklı metod tanımlama işlemi gerçekleştirilmiştir.

**Override Örneği:**

```python

class Animal:

def speak(self):

print("Hayvan konuşuyor.")

class Dog(Animal):

def speak(self):

print("Köpek havlıyor.")

animal = Animal()

animal.speak() # Çıktı: Hayvan konuşuyor.

dog = Dog()

dog.speak() # Çıktı: Köpek havlıyor.

```

Yukarıdaki örnekte, `Animal` sınıfından türetilmiş olan `Dog` sınıfı, `speak` metodunu override ederek kendi davranışını tanımlamıştır. Bu nedenle, `Dog` sınıfından bir örnek oluşturulduğunda, `speak` metodunun alt sınıfta tanımlanan davranışı gösterdiği görülür.

[5] Son