Solidity 솔리디티 강좌 15강 : super 상속

flowing1ife·2023년 7월 7일
0

[ Solidity 깨부수기 ]

목록 보기
15/29
post-thumbnail

Solidity 솔리디티 강좌 15강 : super 상속
이번엔 solidity의 super 상속에 대해 알아보도록 하자.


Super

📌 Solidity

super 상속은 함수를 오버라이딩할 때 주로 사용된다. 예시를 통해 더 자세히 살펴보도록 하겠다.

// SPDX-License-Identifier: GPL-3.0
pragma solidity >= 0.7.0 < 0.9.0;

contract Father {
    event FatherName(string name);

    function who() public virtual {
        emit FatherName("KimDaeho");
    }
}

contract Son is Father {
    event sonName(string name);
    
    function who() public override {
        emit FatherName("KimDaeho");
        emit sonName("KimJin");
    }
}

이번에도 Father, Son 컨트랙트를 만들고 who 함수를 overriding 했다.
근데 만약 who 함수의 코드가 엄청 긴데 이를 위처럼 overriding하는 who 함수에 반영하고 싶다면 일일이 다 써주어야하는 번거로움이 생긴다.

이처럼 상속을 받을 때 여러 줄의 코드를 상속 받기 위해 반복 작업해야하는 번거로움을 덜기 위해 super 를 사용한다.

// SPDX-License-Identifier: GPL-3.0
pragma solidity >= 0.7.0 < 0.9.0;

contract Father {
    event FatherName(string name);

    function who() public virtual {
        emit FatherName("KimDaeho");
    }
}

contract Son is Father {
    event sonName(string name);
    
    function who() public override {
        super.who();
        emit sonName("KimJin");
    }
}

super.who()를 통해 상속받은 Father 컨트랙트의 who 함수를 실행하고 sonName event를 실행할 수 있다.

👉 결과

FatherName event가 실행돼서 "KimDaeho"가 출력되고, sonName event가 실행되어 "KimJin"이 출력된 것을 볼 수 있다.


출처 및 참고 자료

profile
👩🏻‍💻 Backend Engineer, Contract Developer

0개의 댓글