30일 - 다형성

특사-VC / 30일의 견고함


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




Solidity Series의 30 중 Day30입니다.
오늘 나는 Solidity의 다형성에 대해 배웠습니다.

다형성은 하나 이상의 형식으로 데이터를 처리하는 기능입니다. 다른 프로그래밍 언어와 마찬가지로 Solidity도 다형성을 지원합니다. Solidity는 함수 다형성과 계약 다형성이라는 두 가지 유형의 다형성을 지원합니다.

함수 다형성



함수 다형성은 메서드 오버로딩이라고도 합니다. 함수 다형성에서는 동일한 계약 또는 상속 계약 내에서 동일한 이름을 갖는 여러 함수가 선언됩니다. 함수는 매개변수 또는 매개변수 데이터 유형의 수에 따라 다릅니다. 함수 선언은 반환 유형만 다른 ​​함수에 의해 오버로드될 수 없습니다.

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

// Contract definition
contract methodOverloading {

    // Function to get value of the string variable
    function getValue(string memory _strin) public pure returns(string memory) {
        return _strin;
    }

    // function to get value of the unsigned integer variable
    function getValue(uint _num) public pure returns(uint) {
        return _num;
    }
}



계약 다형성



계약 다형성은 여러 계약 인스턴스가 상속을 사용하여 서로 관련될 때 상호 교환 가능하게 사용하는 것을 의미합니다. 이는 상위 계약의 인스턴스를 사용하여 하위 계약 기능을 호출하는 데 도움이 됩니다.

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

contract parent{

    // Internal state variable
    uint internal sum;

    // Function to set the value of internal state variable sum
    function setValue(uint _num1, uint _num2) public {
        sum = _num1 + _num2;
    }

    // Function to return a value 10
    function getValue() virtual public view returns(uint) {
        return 10;
    }
}

// Defining child contract
contract child is parent{

    // Function getValue overloaded to return internal state
    // variable sum defined in the parent contract
    function getValue() override public view returns(uint) {
        return sum;
    }
}

// Defining calling contract
contract ContractPolymorphism {

    // Creating object
    parent pc = new child();

    // Function to set values of 2 unsigned integers
    function getInput(uint _num1, uint _num2) public {
        pc.setValue(_num1, _num2);
    }

    // Function to get value of internal state variable sum
    function getSum() public view returns(uint) {
        return pc.getValue();
    }
}

ContractPolymorphism 계약을 배포하고 getInput52 값으로 함수78를 호출한 다음 getSum 메서드를 호출하면

0:
uint256: 130

좋은 웹페이지 즐겨찾기