견고성-상속

상속은 계약의 기능을 확장하는 방법입니다. Solidity는 단일 및 다중 상속을 모두 지원합니다. 다음은 주요 하이라이트입니다.

  • 파생 된 계약은 내부 메서드 및 상태 변수를 포함하여 모든 비공개 멤버에 액세스 할 수 있습니다. 그러나 이것을 사용하는 것은 허용되지 않습니다.

  • 함수 서명이 동일하게 유지되는 경우 함수 재정의가 허용됩니다. 출력 매개 변수가 다른 경우 컴파일이 실패합니다.

  • super 키워드를 사용하거나 슈퍼 계약 이름을 사용하여 슈퍼 계약의 함수를 호출 할 수 있습니다.

  • 다중 상속의 경우 super를 사용하는 함수 호출은 대부분의 파생 계약을 우선합니다.

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

Solidity First Application 장에 제공된 단계를 사용하여 위 프로그램을 실행하십시오 . 다양한 방법의 계약을 실행합니다. E.getComputedResult () 다음에 E.getResult ()가 표시됩니다.

산출

0: uint256: 8