Wenn ich zwei Verträge A, B schreibe und einen mit einem anderen erweitere, kann ich dann Methoden aus Vertrag A in Vertrag B verwenden, wenn ich bereitstelle?

Wenn ich zwei Verträge habe, die sich gegenseitig verlängern, kann ich Methoden verwenden, die in einem Vertrag in einem anderen verfügbar sind, wenn ich bereitgestellt habe. Wir müssen sie in einer Datei aufnehmen oder anders bereitstellen und sie nach Adressen abrufen.

Antworten (2)

Vererbung ist keine Ethereum-Funktion, aber Sie können sie während der Entwicklungsphase verwenden, um die Codewartung zu verbessern. Beispielsweise können Sie die Vererbung in Solidity verwenden . In jedem Fall werden alle übergeordneten Verträge in den kompilierten Vertrag aufgenommen, sodass er über den gesamten Code verfügt, der für die Ausführung als einzelner Vertrag erforderlich ist.

Auch wenn ein Vertrag von mehreren anderen Verträgen erbt, wird nur ein einziger Vertrag auf der Blockchain erstellt, der Code aus den Basisverträgen wird immer in den endgültigen Vertrag kopiert.

Darüber hinaus lässt Ethereum einen Vertrag zu, um Code von einem anderen Vertrag aufzurufen (d. h. Call-Funktion auf einem anderen Vertrag ), aber es hat nichts mit Vertragsvererbung zu tun.

Die Vererbung in Solidity funktioniert wie in vielen Oop-Sprachen, was bedeutet, dass Sie natürlich eine übergeordnete Funktion aufrufen können, siehe Solidity im Wiki .

Außerdem können sich beide Verträge in derselben Datei oder in getrennten Dateien befinden, solange sie zusammen erstellt werden, damit die namensbasierte Vererbung funktioniert.

Beachten Sie, dass beide Verträge getrennte Adressen haben, sodass Sie auch eine Funktion des übergeordneten oder des untergeordneten Vertrags mithilfe ihrer Adresse aufrufen können.