견고성-상속
상속은 계약의 기능을 확장하는 방법입니다. 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