Golang: was ist der Sinn von interfaces, wenn Sie mehrere inheritence

Ich bin ein Java-Programmierer, Programmieren lernen in Go. So weit ich mag die Sprache. VIEL mehr als Java.

Aber es gibt eine Sache, ich bin ein bisschen verwirrt. Java-Schnittstellen, da Klassen nur Erben von einer Klasse. Da Gehen erlaubt multiple Vererbung, was ist der Sinn von interfaces?

  • Meiner bescheidenen Meinung nach, die Antwort zu stackoverflow.com/questions/8531292/... gilt auch hier.
  • Interfaces und Mehrfachvererbung sind verwandt, aber nur am Rande. Java-Schnittstellen sind kein Ersatz für die Mehrfachvererbung. Schnittstellen ermöglichen es Ihnen, zu gesonderten Vertrag von der Implementierung. Mehrfache Vererbung beschränkt wurde verwendet, verursacht aber mehr Probleme und nicht-intuitives, schwer zu Debuggen Probleme, als es Wert, IMHO.
  • könnten Sie das näher erläutern? Schnittstellen nur sagen, 'was' zu tun, in der Erwägung, dass bei der Vererbung erhalten Sie auch Informationen darüber, " wie " es zu tun, mit der option überschreiben das Verhalten. Wie kann Vererbung zu Problemen führen, und in welchen Szenarien würden Schnittstellen überlegen. Ein Beispiel würde wirklich helfen!
  • Viel Arbeit wurde investiert, um Problemumgehungen für die das diamond inheritance problem. Java vermeidet diesen gänzlich. Eine vollständige Abhandlung über den Unterschied zwischen interfaces und Vererbung wäre mehr Platz vorhanden ist als auf SO.
  • Stimme völlig mit Ihnen auf, dass. Java vermeidet die mehrfache Vererbung, und muss die Schnittstellen, weil die. Go ermöglicht die mehrfache Vererbung, indem Sie Sie überschreiben die widersprüchliche Methoden. Meine Frage war, welchen Zweck die Schnittstellen dienen in diesem Szenario. Stellt sich heraus, es ist duck typing. Ich füge eine Antwort für den gleichen
  • Es gibt keine Vererbung in OOP-Sinne im Gehen.

InformationsquelleAutor tldr | 2013-08-04
Schreibe einen Kommentar