सॉलिडिटी - वंशानुक्रम

विरासत एक अनुबंध की कार्यक्षमता का विस्तार करने का एक तरीका है। सॉलिडिटी सिंगल और साथ ही मल्टीपल इनहेरिटेंस दोनों को सपोर्ट करती है। निम्नलिखित प्रमुख हाइलाइस्ट हैं।

  • एक व्युत्पन्न अनुबंध सभी गैर-निजी सदस्यों तक पहुंच सकता है जिसमें आंतरिक तरीके और राज्य चर शामिल हैं। लेकिन इसका उपयोग करने की अनुमति नहीं है।

  • फ़ंक्शन ओवरराइडिंग की अनुमति है बशर्ते फ़ंक्शन हस्ताक्षर समान रहे। आउटपुट मापदंडों के अंतर के मामले में, संकलन विफल हो जाएगा।

  • हम सुपर कीवर्ड का उपयोग करके या सुपर कॉन्ट्रैक्ट नाम का उपयोग करके सुपर कॉन्ट्रैक्ट के फ़ंक्शन को कॉल कर सकते हैं।

  • कई विरासत के मामले में, सुपर का उपयोग करके फ़ंक्शन कॉल सबसे व्युत्पन्न अनुबंध को वरीयता देता है।

उदाहरण

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(); }
}

सॉलिडिटी फर्स्ट एप्लीकेशन चैप्टर में दिए गए चरणों का उपयोग करके उपरोक्त प्रोग्राम को चलाएं । संविदा के विभिन्न तरीके चलाएं। E.getComputedResult () के लिए E.getResult () शो के बाद -

उत्पादन

0: uint256: 8