Java-Schnittstelle und Vererbung

8

Wenn wir haben:

%Vor%

Gibt es einen Unterschied zwischen:

%Vor%

und

%Vor%

Ich sehe viel Code wie diesen und es verwirrt mich immer. Muss BarBar Foo implementieren? Ich meine, da es Bar erweitert, um damit zu beginnen, ist das nicht schon da? Ich denke, meine Frage ist, welchen Zweck erfüllt die Implementierung von Foo in BarBar hier?

    
Joachim Sauer 01.08.2009, 00:11
quelle

5 Antworten

14

Der Hauptunterschied besteht in 15 völlig unnötigen Zeichen: -)

Wenn Ihre Elternklasse eine Schnittstelle implementiert, werden alle Schnittstellenmethoden entweder von ihr implementiert 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.

    
ChssPly76 01.08.2009, 00:14
quelle
3

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

    
Pavel Minaev 01.08.2009 00:15
quelle
2

Es könnte argumentiert werden, dass die zweite "erweitert X implementiert Y" ist ausführlich, 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 Schnellschreiber, so dass die zusätzlichen paar Zeichen praktisch keine Zeit zum Tippen kosten. Warum sind so viele Ziele beim Tippen weniger, wenn es um Klarheit geht und Mehrdeutigkeit beseitigt wird und nicht alle Fakten angegeben werden ...

    
mP. 01.08.2009 01:12
quelle
0

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

    
Jataro 01.08.2009 00:15
quelle
0

Nun, ich stimme all den Kommentaren, die zu diesem Thema gesagt wurden, zu, dass es eine wirklich unnötige Implementierung ist, auch wenn ich das Verhalten von barbar in Bezug auf foo-Implementierung übersteuern möchte, um das Überschreiben dieser Methoden zu erzwingen und mache die IDE automatisch für mich!

Aber es ist die gleiche Sache wie das Überschreiben dieser Funktionalität in der Barbar

    
Amr Gawish 01.08.2009 00:28
quelle

Tags und Links