23일 - 계층적 상속

특사-VC / 30일의 견고함


스마트 계약 개발을 배우기 위한 30일간의 Solidity 단계별 가이드.




Solidity Series의 23 중 Day30입니다.
오늘은 Solidity에서 계층적 상속에 대해 배웠습니다.

계층적 상속



계층적 상속에서 상위 계약에는 둘 이상의 하위 계약이 있습니다. 공통 기능을 다른 곳에서 사용할 때 주로 사용합니다.

예: 아래 예에서 계약 A는 계약 B에 의해 상속되고 계약 A는 계약 C에 의해 상속되므로 계층적 상속을 보여줍니다.

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.7;

// Defining parent contract A
contract A {
    string internal x;

    function getA() external {
        x = "Hierarchical Inheritance";
    }

    uint256 internal sum;

    function setA() external {
        uint256 a = 10;
        uint256 b = 20;
        sum = a + b;
    }
}



// Defining child contract B inheriting parent contract A
contract B is A {
    // Defining external function to return state variable x
    function getAstr() external view returns (string memory) {
        return x;
    }
}



// Defining child contract C inheriting parent contract A
contract C is A {
    // Defining external function to return state variable sum
    function getAValue() external view returns (uint256) {
        return sum;
    }
}



// Defining calling contract
contract caller {
    // Creating object of contract B
    B contractB = new B();

    // Creating object of contract C
    C contractC = new C();

    // Defining public function to
    // return values of state variables
    // x and sum
    function testInheritance() public view returns (string memory, uint256) {
        return (contractB.getAstr(), contractC.getAValue());
    }
}


산출:

testInheritance 함수를 호출하면 출력은 ("Hierarchical Inheritance", 30)입니다.

좋은 웹페이지 즐겨찾기