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