Geçersiz Kılma vs Aşırı Yükleme
Overriding yöntemi ve Overloading yöntemi, bazı programlama dillerinde bulunan iki kavram / teknik / özelliktir. Her iki kavram da programcının aynı ada sahip yöntemler için farklı uygulamalar sağlamasına izin verir. Metot geçersiz kılma, programcının bir alt sınıf içinde kendi süper sınıfında tanımlanmış bir metoda alternatif bir uygulama sağlamasına izin verir. Yöntem aşırı yükleme, programcının aynı ada sahip birden çok yönteme (aynı sınıf içinde) farklı uygulamalar sağlamasına olanak tanır.
Geçersiz Kılma Nedir??
Yukarıda belirtildiği gibi, bir sınıf, nesne yönelimli programlama dillerinde bir süper sınıfı veya bir üst sınıfı genişletebilir. Bir alt sınıf kendi yöntemlerine sahip olabilir veya isteğe bağlı olarak üst sınıfında (veya büyük ana sınıflarından birinde) önceden tanımlanmış yöntemlerde kendi uygulamalarına sahip olabilir. Dolayısıyla, ikincisi olduğunda, buna yöntem geçersiz kılma denir. Başka bir deyişle, alt sınıf, üst sınıflarından birinde önceden tanımlanmış bir yöntemle aynı imza ve dönüş türüne sahip bir yönteme bir uygulama sağlıyorsa, bu yöntemin alt sınıfın uygulanmasıyla geçersiz kılındığı (değiştirildiği) söylenir. . Bu nedenle, bir sınıfta geçersiz kılınmış bir yöntem varsa, çalışma zamanı sisteminin hangi yöntem uygulamasının kullanılacağına karar vermesi gerekir. Bu sorun, onu çağırmak için kullanılan nesnenin tam türüne bakılarak çözülür. Üst sınıfın bir nesnesi geçersiz kılınan yöntemi çağırmak için kullanılırsa, üst sınıftaki uygulama kullanılır. Benzer şekilde, kullanılan alt sınıfın bir nesnesiyse, alt sınıfın uygulaması kullanılır. Java, Eifell, C ++ ve Python gibi modern programlama dilleri yöntem geçersiz kılmayı sağlar.
Aşırı Yükleme Nedir?
Yöntem aşırı yükleme, bazı programlama dilleri tarafından aynı adda, ancak farklı giriş ve çıkış türlerinde birden fazla yöntem oluşturmak için sağlanan bir özelliktir. Java, C #, C ++ ve VB.NET gibi modern programlama dillerinde bu özellik kullanılabilir. Aynı ada ancak farklı bir yöntem imzasına veya farklı bir dönüş türüne (veya her ikisine) sahip başka bir yöntem oluşturarak yöntemi aşırı yükleyebilirsiniz. Örneğin, aynı sınıf içinde method1 (type1 t1) ve method1 (type2 t2) varsa, bunlar aşırı yüklenir. Daha sonra sistem çağrıldığında hangisinin yürütüleceğine karar vermek zorunda kalacak. Bu farklılaşma, yönteme aktarılan parametrelerin türüne bakılarak yapılır. Argüman tip1 ise, ilk uygulama çağrılır, tip2 ise, ikinci uygulama çağrılır.
Overriding ve Overloading arasındaki fark nedir?
Her ne kadar farklı uygulamalara sahip bir yöntem sağlamak için yöntem geçersiz kılma ve yöntem aşırı yükleme kullanılsa da, bu iki kavram / teknik arasında önemli farklılıklar vardır. Her şeyden önce, yöntem geçersiz kılma konuları her zaman farklı sınıflarda kalırken, yöntem aşırı yükleme konuları aynı sınıfta kalır. Bu, geçersiz kılmanın yalnızca kalıtıma izin veren nesne yönelimli programlama dillerinde mümkün olduğu, aşırı yükleme de nesne yönelimli olmayan bir dilde de yapılabileceği anlamına gelir. Başka bir deyişle, süper sınıftaki bir yöntemi geçersiz kılarsınız, ancak kendi sınıfınızdaki bir yöntemi aşırı yüklersiniz.
Başka bir fark, geçersiz kılınan yöntemlerin aynı yöntem adına, yöntem imzasına ve dönüş türüne sahip olması, ancak aşırı yüklenmiş yöntemlerin imzada veya dönüş türünde farklı olması gerekir (ad aynı olmalıdır). İki geçersiz kılınmış yöntem arasında ayrım yapmak için, kullanılan yöntemler kimliğini çağırmak için kullanılan nesnenin tam türü, aşırı yüklenmiş iki yöntem arasında ayrım yapmak için ise parametre türleri kullanılır. Diğer bir önemli fark, aşırı yüklenmenin derleme zamanında çözülmesi ve geçersiz kılmanın çalışma zamanında çözülmesidir.