21일차 - 단일 상속

특사-VC / 30일의 견고함


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




Solidity Series의 21 중 Day30입니다.
오늘은 Solidity에서 단일 상속에 대해 배웠습니다.

상속은 객체 지향 프로그래밍 언어의 가장 중요한 기능 중 하나입니다. 프로그램의 기능을 확장하는 방법으로, 코드를 분리하고 종속성을 줄이며 기존 코드의 재사용성을 높입니다. Solidity는 여러 계약을 단일 계약으로 상속할 수 있는 스마트 계약 간의 상속을 지원합니다. 다른 계약이 기능을 상속하는 계약을 기본 계약이라고 하며 기능을 상속하는 계약을 파생 계약이라고 합니다. 간단히 말해서 부모-자식 계약이라고 합니다. Solidity의 상속 범위는 공개 및 내부 한정자로만 제한됩니다. Solidity의 주요 특징 중 일부는 다음과 같습니다.
  • 파생된 계약은 상태 변수 및 내부 메서드를 포함하여 비공개가 아닌 모든 멤버에 액세스할 수 있습니다. 그러나 이것을 사용하는 것은 허용되지 않습니다.
  • 함수 서명이 동일하게 유지되는 경우 함수 재정의가 허용됩니다. 출력 매개변수가 다를 경우 컴파일이 실패합니다.
  • 슈퍼 키워드 또는 슈퍼 계약 이름을 사용하여 슈퍼 계약의 기능을 호출할 수 있습니다.
  • 다중 상속의 경우 super를 사용하는 함수 호출은 대부분의 파생 계약에 우선권을 부여합니다.

  • Solidity는 다양한 유형의 상속을 제공합니다.

    단일 상속



    단일 또는 단일 수준 상속에서 하나의 기본 계약의 기능 및 변수는 하나의 파생 계약에만 상속됩니다.

    예: 아래 예에서 단일 상속을 보여주기 위해 계약 상위가 계약 하위에 상속됩니다.

    // SPDX-License-Identifier: MIT
    pragma solidity ^0.8.7;
    
    // Defining contract
    contract parent {
        uint256 internal sum;
    
        function setValue() external {
            uint256 a = 10;
            uint256 b = 20;
            sum = a + b;
        }
    }
    
    // Defining child contract
    contract child is parent {
        function getValue() external view returns (uint256) {
            return sum;
        }
    }
    
    // Defining calling contract
    contract caller {
        child cc = new child();
    
        // Defining function to call setValue and getValue functions
        function testInheritance() public returns (uint256) {
            cc.setValue();
            return cc.getValue();
        }
    }
    


    산출:

    testInheritance 함수를 호출하면 출력은 30입니다.

    좋은 웹페이지 즐겨찾기