Yanıtlar:
Bir yöntemi yeni bir yöntemle aşırı yüklemek için, yeni yöntemin farklı bir imzası olmalıdır. Aşırı yüklenmiş iki yöntem aynı ada ancak farklı parametrelere sahiptir. Aşırı yüklenmiş iki yöntemin bir örneği:
boolean isOdd(int number) { ... };
boolean isOdd(float number) { ... };
Parametre türlerine bağlı olarak, karşılık gelen yöntem çağrılacaktır. Dönüş türünü değiştirmenin yeterli olmadığını unutmayın (ancak bunu ek olarak yapabilirsiniz).
Bir yöntem geçersiz kılındığında, yeni yöntem aynı imzayı taşır ve bazı durumlarda geçersiz kılınan yöntemin yerini alır. Geçersiz kılınmış bir yöntem örneği:
public class A
{
public void someMethod() { ... }
}
public class B extends A
{
public void someMethod() { ... }
}
Seçim, nesne türüne göre yapılır. Örneğin,
A someA = new B();
someA.someMethod();
arayacak someMethodarasında B. @Override ek açıklamasını ekleyebilirsiniz (ve eklemelisiniz):
public class B extends A
{
@Override
public void someMethod() { ... }
}
Şimdi, yanlışlıkla B'deki parametreleri değiştirirseniz, derleyici size, someMethod () öğesini geçersiz kılmadığınızı ancak aşırı yüklediğinizi bildirir.
Aşırı yükleme, yöntemler aynı ada ancak farklı parametrelere sahiptir.
Geçersiz kılma durumunda, taban sınıfta verilen uygulama alt sınıftaki uygulama ile değiştirilir.
Hakkında sorduğunuz kavramlar Java öğreticilerinde ele alınmıştır.
Geçersiz kılma için açıklama aşağıdaki gibidir:
Üst sınıftaki bir örnek yöntemi olarak aynı imzalı (ad, artı sayı ve türünün parametreleri) ve dönüş türüne sahip bir alt sınıftaki örnek yöntemi, üst sınıfın yöntemini geçersiz kılar .
Bir alt sınıfın bir yöntemi geçersiz kılma yeteneği, bir sınıfın davranışı "yeterince yakın" olan bir üst sınıftan miras almasına ve ardından davranışı gerektiği gibi değiştirmesine izin verir. Geçersiz kılma yöntemi, geçersiz kıldığı yöntemle aynı ada, sayıya ve parametre türüne ve dönüş türüne sahiptir. Geçersiz kılma yöntemi, geçersiz kılınan yöntem tarafından döndürülen türde bir alt tür de döndürebilir. Buna kovaryant dönüş tipi denir .
Bir yöntemi geçersiz kılarken
@Override, derleyiciye üst sınıftaki bir yöntemi geçersiz kılmak istediğinizi bildiren ek açıklamayı kullanmak isteyebilirsiniz . Herhangi bir nedenle, derleyici, yöntemin üst sınıflardan birinde bulunmadığını algılarsa, bir hata oluşturur. Hakkında daha fazla bilgi için@Overridebkz. Ek Açıklamalar ...
Aşırı yükleme öğreticide şu şekilde açıklanmıştır :
Java programlama dili aşırı yükleme yöntemlerini destekler ve Java, farklı yöntem imzalarına sahip yöntemler arasında ayrım yapabilir. Bu, bir sınıf içindeki yöntemlerin farklı parametre listeleri varsa aynı ada sahip olabileceği anlamına gelir ("Arayüzler ve Kalıtım" başlıklı derste ele alınacak bazı nitelikler vardır.
Çeşitli veri türleri (dizeler, tamsayılar vb.) Çizmek için kaligrafi kullanabilen ve her veri türünü çizmek için bir yöntem içeren bir sınıfınız olduğunu varsayalım. Her yöntem örneğin, yeni bir isim kullanmak zahmetlidir
drawString,drawInteger,drawFloatve böyle devam eder. Java programlama dilinde, tüm çizim yöntemleri için aynı adı kullanabilirsiniz, ancak her yönteme farklı bir bağımsız değişken listesi iletebilirsiniz. Bu nedenle, veri çizim sınıfıdraw, her biri farklı bir parametre listesine sahip olan dört yöntem bildirebilir ...Aşırı yüklenmiş yöntemler, yönteme iletilen bağımsız değişkenlerin sayısı ve türü ile ayırt edilir ...
Aynı ada ve aynı sayıda ve türde bağımsız değişkene sahip birden fazla yöntem bildiremezsiniz çünkü derleyici bunları birbirinden ayıramaz.
Derleyici yöntemleri farklılaştırırken dönüş türünü dikkate almaz, bu nedenle farklı bir dönüş türüne sahip olsalar bile aynı imzayla iki yöntem bildiremezsiniz.
Not: Aşırı yüklenmiş yöntemler, kodu çok daha az okunabilir yapabildikleri için, az miktarda kullanılmalıdır.
Aşırı yüklemeye ilişkin yukarıdaki açıklama, "Arayüzler ve Kalıtım" başlıklı derste tartışılan niteliklerden bahsetmektedir :
Bir alt sınıfta, üst sınıftan miras alınan yöntemleri aşırı yükleyebilirsiniz. Bu tür aşırı yüklenmiş yöntemler, üst sınıf yöntemlerini gizlemez veya geçersiz kılmaz; bunlar, alt sınıfa özgü yeni yöntemlerdir.
Bir yöntemin aşırı yüklenmesi tipik olarak "giriş ve çıkışların sayısı ve türüne göre farklılık gösteren, aynı ada sahip birden fazla kullanılabilir yöntem sağlamak" olarak tanımlanır. Kavram genellikle, farklı girdi kümeleri verildiğinde aynı temel işlemi gerçekleştirmek istediğinizdir: örneğin, sayısal türde herhangi iki değeri "ekleyebilir", ancak tam olarak ne tür olduğunu bilmek genellikle önemlidir. bu değer, o türdeki belirli davranışlardan yararlanabilmeniz veya bu tür davranışlar için plan yapabilmenizdir. Bu nedenle, desteklemek istediğiniz sayısal türlerin (ve / veya koleksiyonların) her bir kombinasyonu için bir yöntem tanımlarsınız. Tüm bu yöntemler aynı ada, ancak farklı "imzalara" sahiptir; derleme zamanında,
Bir yöntemin geçersiz kılınması tipik olarak "bir yöntemin türetilmiş bir sınıfında, temel sınıfta tanımlanan belirli bir imzayla farklı bir uygulama sağlama" olarak tanımlanır. Bir yöntemi geçersiz kılmanın birçok nedeni vardır; neredeyse hepsinin ortak noktası, türetilmiş sınıfın, temel sınıf tarafından bilinemeyen ne yapılması gerektiği hakkında ek bilgiye sahip olması gerçeğine sahiptir. Çoğu OO dilinde geçersiz kılmanın iki çeşidi vardır; geçersiz kılma temel sınıf yöntemini değiştirebilir veya genişletebilirtemel sınıf yöntemi. Fark genellikle, temel sınıf uygulamasını genişleten türetilmiş bir sınıfın, temel sınıfın, geçersiz kılma yönteminin yürütülmesi sırasında bir noktada yöntemin geçersiz kılınan sürümünü çağırmasıdır. Bu, geçersiz kılınan sınıfların, temel sınıfta yer alan işlemin ortak alanlarını "yeniden kullanmasına" olanak tanır.