Geerbte Funktionen überschreiben

Published by Mario Oettler on

Sollte einem der Inhalt einer von einem anderen Contract geerbten Funktion nicht gefallen, kann man diese Funktion überschreiben. Voraussetzung dafür ist, dass diese Funktion in dem Eltern-Contract (auch Base-Contract genannt) mit “virtual” markiert ist. Zudem müssen Eingabeparameter und Rückgabeparameter mit der ursprünglichen Funktion übereinstimmen.

Das Überschreiben der Funktion geschieht mit dem Schlüsselwort “override”.

Beispiel

Den Quellcode finden Sie in der Datei contract_s2_09.sol.

// SPDX-License-Identifier: unlicensed
pragma solidity 0.8.20;

import "@openzeppelin/contracts/token/ERC721/ERC721.sol";
import "@openzeppelin/contracts/access/Ownable.sol";

contract MyERC721 is Ownable, ERC721("BAS 2023 721", "BAS "){
    address public myAddress;

    function transferFrom(address _from, address _to, uint256 tokenID) public override{
        myAddress = _from;
    }
}

Die Funktion transferFrom wird durch unseren eigenen Code überschrieben.

Aufgabe

Überschreiben Sie die Funktion balanceOf() aus der ERC721-Bibliothek von OpenZeppelin, sodass diese stets den Wert 10 zurückgibt.

Lösung

Categories: