2009-08-01 19 views
8

biz varsa:Java arayüzü ve miras

public class BarBar extends Bar implements Foo{..} 

ve

bu ve hep böyle bir sürü kod bakın
public class BarBar extends Bar{..} 

:

public interface Foo{} 

public class Bar implements Foo{...} 

arasında bir fark var mı beni şaşırtıyor. BarBar'un Foo uygulaması gerekiyor mu? Yani başlamak için Bar uzanır beri o zaten değil mi? Benim sorum, BarBar içinde Foo uygulanmasının amacı nedir? senin üst sınıf bazı arabirim uyguladığında

cevap

14

farkı tüm arabirim yöntemleri ya onun tarafından uygulanan veya soyut olarak (açıkça veya örtük) tanımlanır,

:-) 15 tamamen gereksiz karakterdir. Her iki durumda da, ana sınıfı genişleten sınıfınız tüm bu yöntemleri devralır ve orijinal arayüzü dolaylı olarak uygular.

3

Fark yoktur. Ekstra implements, zararsızdır, ancak faydasızdır.

0

foo uygulamak için herhangi bir sebep yoktur. Çünkü bar bir foo barbar da olacak.

0

Bu konu hakkında söylenen tüm yorumlara katılıyorum ki, gerçekten de gereksiz bir uygulama yapmam mümkün olsa da, bunu yapmak için barbarın davranışını geçersiz kılmak isterim. Bunu yapmak için bunu yapabilirim. yöntemleri ve IDE otomatik benim için uygulamak!

Ama barbar

2

İkinci "X uzanır Y uygulayan" olduğu ileri sürülebilir olanlar işlevselliği geçersiz kılma olarak aynı şey ayrıntılı ama fazladan bir kaç karakter iyi bir hatırlatma vardır. ArrayList'e bir göz atın vb. AbstrsvtList Listesini genişleten uzun formu kullanacaklarına eminim.

Sonunda çoğu geliştirici hızlı yazımcılar olduğundan, fazladan birkaç karakterin yazması için neredeyse hiç zaman gerekmiyor. Neden netlik ve belirsizliklerin ortadan kaldırılması gerektiği ve tüm gerçekleri belirtmemesi gerektiğinde daha az yazmanızla ilgili pek çok hedefimiz var ...