Festigkeit - Vererbung
Vererbung ist eine Möglichkeit, die Funktionalität eines Vertrags zu erweitern. Solidity unterstützt sowohl die Einzel- als auch die Mehrfachvererbung. Im Folgenden sind die wichtigsten Highlighs aufgeführt.
Ein abgeleiteter Vertrag kann auf alle nicht privaten Mitglieder zugreifen, einschließlich interner Methoden und Statusvariablen. Dies ist jedoch nicht zulässig.
Das Überschreiben von Funktionen ist zulässig, sofern die Funktionssignatur gleich bleibt. Bei unterschiedlichen Ausgabeparametern schlägt die Kompilierung fehl.
Wir können die Funktion eines Supervertrags mit dem Schlüsselwort super oder dem Namen des Supervertrags aufrufen.
Bei Mehrfachvererbung bevorzugt der Funktionsaufruf mit super den meisten abgeleiteten Vertrag.
Beispiel
pragma solidity ^0.5.0;
contract C {
//private state variable
uint private data;
//public state variable
uint public info;
//constructor
constructor() public {
info = 10;
}
//private function
function increment(uint a) private pure returns(uint) { return a + 1; }
//public function
function updateData(uint a) public { data = a; }
function getData() public view returns(uint) { return data; }
function compute(uint a, uint b) internal pure returns (uint) { return a + b; }
}
//Derived Contract
contract E is C {
uint private result;
C private c;
constructor() public {
c = new C();
}
function getComputedResult() public {
result = compute(3, 5);
}
function getResult() public view returns(uint) { return result; }
function getData() public view returns(uint) { return c.info(); }
}
Führen Sie das obige Programm mit den im Kapitel Solidity First Application beschriebenen Schritten aus . Führen Sie verschiedene Vertragsmethoden aus. Für E.getComputedResult () gefolgt von E.getResult () wird -
Ausgabe
0: uint256: 8