2009-08-01 12 views
8

Wenn wir:Java-Schnittstelle und Vererbung

public interface Foo{} 

public class Bar implements Foo{...} 

Gibt es einen Unterschied zwischen:

public class BarBar extends Bar implements Foo{..} 

und

public class BarBar extends Bar{..} 

ich viel Code wie folgt zu sehen und es immer verwirrt mich. Muss BarBarFoo implementieren? Ich meine, seit es Bar reicht, um damit zu beginnen, ist das nicht schon da? Ich denke, meine Frage ist, welchen Zweck erfüllt die Implementierung Foo in BarBar hier?

Antwort

14

Der Hauptunterschied ist 15 völlig unnötig Zeichen :-)

Wenn Ihre Elternklasse eine Schnittstelle implementiert, alle Interface-Methoden entweder durch sie umgesetzt werden oder (explizit oder implizit) als abstrakt definiert. In jedem Fall erbt Ihre Klasse, die die Elternklasse erweitert, alle diese Methoden und implementiert implizit die ursprüngliche Schnittstelle.

3

Es gibt keinen Unterschied. Das extra implements dort ist harmlos, aber nutzlos.

0

Es gibt keinen Grund, foo zu implementieren. Weil Bar ist ein foo Barbar wird auch sein.

0

Nun, ich stimme all den Kommentaren, die über dieses Problem gesagt wurde, dass seine wirklich unnötige Implementierung, obwohl ich das tun könnte, falls ich das Verhalten der Barbar in Bezug auf Foo-Implementierung überschreiben möchte, so dass ich erzwingen kann, überschreiben diese Methoden und machen Sie die IDE automatisch für mich implementieren!

Aber es ist das gleiche wie jene Funktionalität in barbaren zwingenden

2

Es könnte argumentiert werden, dass die zweiten „erstreckt X implementiert Y“ ist die ausführliche, aber die zusätzlichen paar Zeichen sind eine gute Erinnerung. Werfen Sie einen Blick auf ArrayList etc Ich bin mir ziemlich sicher, dass sie die lange Form verwenden - erweitert AbstrsvtList implementiert List.

Am Ende sind die meisten Entwickler schnelle Typer, so dass die zusätzlichen paar Zeichen praktisch keine Zeit zum Tippen kosten. Warum gibt es so viele Ziele bei der Eingabe von weniger, wenn es um Klarheit und Beseitigung von Zweideutigkeiten und nicht unter Angabe aller Fakten geht ...