Java Overloading vs Overriding
Last updated
Was this helpful?
Last updated
Was this helpful?
Overloading(Yöntem Aşırı Yüklemesi), birden fazla method aynı method adını farklı bir imzayla(İmza metotların kendine has özellikleri bulunur ve bu özellikler Metot İmzası olarak adlandırılır.) class da paylaşır. Overloading'in, dönüş tipi aynı olabilir veya olmayabilir, ancak parametreyi değiştirmemiz gerekir çünkü Java'da yalnızca method dönüş tipini değiştirerek method overloading gibi birşey yoktur.
Örnekteki kodun çıktısı şu şekilde; 10 10 and 20 Hello
Bu örnekte display()
yöntemi birden çok kez farklı imzalar kullanılarak tanımlanmıştır. Overloading (Aşırı yükleme) bize bir methodu kullanırken farklı parametrelerle kullanma imkanı sağlar. Bu sayede, aynı işlemi yapacak farklı parametre kombinasyonlarına sahip birden çok method tanımlamamıza gerek kalmaz.
Overriding (Yöntem Geçersiz Kılma), bir sınıfın başka bir sınıftan miras aldığı metodları kendi içerisinde yeniden tanımlayarak kullanmasıdır. Daha anlaşılır bir şekilde ifade etmek gerekirse, bir sınıfın metodlarını başka bir sınıf aynı isimle tanımlayabilir ve kendi ihtiyaçları doğrultusunda yeniden oluşturabilir. Overriding, dönüş tipi aynı olmalı veya türetilmiş sınıfla aynı yönde değişebilir olmalıdır.
Örnekteki kodun çıktısı şu şekilde; The animal makes a sound The dog barks
Bu örnekte Dog
classı makeSound()
methodunu rverrid ederek Dog
classı içinde yeniden tanımlamıştır. İki class da da aynı isimde method olmasına rağmen ikisi de birbirinden bağımsız çıktılar vermişlerdir.
Bu örnekte hem overloading overriding bir arada görmekteyiz aradaki söz dizimi farkı açıkca gözükmekte. Overloading de, aynı method makeSound()
farklı parametrelerle çağırılmışken, overriding ise aynı method makeSound()
farklı classın içinde tekrar tanımlanmıştır.
Method overloading derleme zamanı çok biçimliliğidir (compile-time polymorphism).
Method overriding çalışma zamanı çok biçimliliğidir (run-time polymorphism).
Method overloading, programın okunabilirliğini artırmaya yardımcı olur.
Method overriding, temel sınıf veya ebeveyn sınıf tarafından sağlanan yöntemin belirli bir uygulamasını sağlamak için kullanılır.
Sınıf içinde gerçekleşir.
Kalıtım ilişkileri olan iki sınıfta gerçekleştirilir.
Method overloading, kalıtım gerektirebilir veya gerektirmeyebilir.
Method overriding her zaman kalıtım gerektirir.
Method overloading'de, yöntemler aynı isme ve farklı imzalara sahip olmalıdır.
Method overriding'de, yöntemler aynı isme ve aynı imzaya sahip olmalıdır.
Method overloading'de, dönüş tipi aynı olabilir veya olmayabilir, ancak parametreyi değiştirmemiz yeterlidir.
Method overriding'de, dönüş tipi aynı veya co-variant olmalıdır.
Statik bağlama (static binding) aşırı yüklenmiş yöntemler için kullanılır.
Dinamik bağlama (dynamic binding) geçersiz kılınan yöntemler için kullanılır.
Derleme zamanı çok biçimliliğinden dolayı düşük performans sağlar.
Daha iyi performans sağlar. Bunun nedeni, geçersiz kılınan yöntemlerin çalışma zamanında bağlanmasıdır.