Mevcut, oldukça büyük bir sistem üzerinde çalıştığımı varsayalım. myObjectSınıfın bir nesnesi var MyClass(örneğin uğruna, Java'da çalıştığımı varsayalım). myObjecta Collection, mesela a Listve diğer (önemsiz) objeleri içeren bir bileşimdir . Bu, maruz kalmamasını Listsağlamak için sadece oluştuğu yöntemleri çağırmaya hizmet eden temsilci yöntemleri içerir List(terminolojimi yanlış anladığım için üzgünüm).
Bunun Listbir List<String>neden olduğunu söyleyebiliriz, ancak bazı nedenlerden dolayı ana erişim yöntemi sınıf için bir maske yöntemidir SomeOtherClass. Eğer yeni bir değer çifti eklemek isteseydim List, SomeOtherClassçağrılmış bir cisim olurdu someObject. Ben çağırır myObject.insert(someObject)ve insertyöntemin içinde Stringiçine koymak için alacak bir sihir olurdu List<String>.
Diyelim ki sadece bir değerim var Stringve SomeOtherClasseklenecek nesne yok . insertYöntemi değiştiremediğim varsayılıyor çünkü bu sistemdeki her şeyi kıracak. O zaman insertyöntemi aşırı yüklemem gerekir mi? Yoksa SomeOtherClassher aramak istediğimde yeni bir nesne mi oluşturmalıyım insert?
Ben aşırı yük olsaydı, böyle bir şey olurdu sanırım ...
public void insert(String s) {
...
}
public void insert(SomeOtherObject obj) {
this.insert(obj.magicStringMethod());
}
(Bu örnek, dün karşılaştığım aşırı yükleme ile ilgili benzer (biraz daha karmaşık) bir duruma dayanan yapmacık bir bulmaca. Belirsiz bir şey varsa genişleteceğim)
Burası bir yöntemi aşırı yüklemek için uygun bir yer olabilir mi? Değilse, ne zaman bir yöntemi aşırı yüklemeliyim?
magicStringMethod()benim örneğimde, benim durumumda, bir etki alanı nesnesi olan bir Stringtemsilini alır SomeOtherObject.