Söz konusu kodun tamamı üzerinde tam kontrole sahip olduğunuzda ve bunu önceden uygulayabildiğinizde, her şey yolunda. Şimdi birçok yerde bir yöntemle kullanılan mevcut bir genel sınıfınız olduğunu hayal edin
public class MyClass{
private String name;
MyClass(String name){
this.name = name;
}
public String getName(){
return name;
}
}
Şimdi bunu, sınıfların aynı zamanda bir getName () yöntemine sahip olan WBPInterface ... uygulamasını gerektiren kullanıma hazır WizzBangProcessor'a aktarmanız gerekir, ancak somut uygulamanız yerine, bu arabirim yöntemin bir türün adını döndürmesini bekler. of Wizz Bang Processing.
C # 'da bir trvial olurdu
public class MyClass : WBPInterface{
private String name;
String WBPInterface.getName(){
return "MyWizzBangProcessor";
}
MyClass(String name){
this.name = name;
}
public String getName(){
return name;
}
}
Java Tough'da, bir arabirimden diğerine dönüştürmeniz gereken mevcut konuşlandırılmış kod tabanındaki her noktayı tanımlamanız gerekecek. Elbette WizzBangProcessor şirketi getWizzBangProcessName () kullanmalıydı, ancak onlar da geliştiriciler. Kendi bağlamında getName iyiydi. Aslında, Java dışında, diğer OO tabanlı dillerin çoğu bunu destekler. Java, tüm arabirimleri aynı NAME yöntemiyle uygulanmaya zorlamada nadirdir.
Diğer dillerin çoğunda, "bu uygulanan arayüzde bu yöntemin imzasıyla eşleşen bu sınıftaki bu yöntem, uygulanmasıdır" diyen bir talimat almaktan çok mutlu olan bir derleyiciye sahiptir. Sonuçta, arayüzleri tanımlamanın tüm amacı, tanımın uygulamadan soyutlanmasına izin vermektir. (Beni Java Arayüzlerinde varsayılan yöntemlere sahip olmaya bile başlatmayın, varsayılanı geçersiz kılmayı bırakın ... çünkü tabii ki, bir yol arabası için tasarlanan her bileşen uçan bir arabaya çarpıp sadece çalışabilmelidir - hey ikisi de araba ... eminim ki, uydu navigasyonunuzun varsayılan işlevselliği, varsayılan perde ve yuvarlanma girişlerinden etkilenmeyecektir, çünkü arabalar sadece yalpalama!