[솔리디티 깨부수기] 상속 : super, 상속의 순서

2024. 6. 12. 04:11·자기개발/블록체인
728x90

이 글은 인프런 "솔리디티 깨부수기" 상속4, 5 강의를 수강한 후 정리한 글입니다. 

 

[지금 무료] 솔리디티 깨부수기 | D_One - 인프런

D_One | 이 강의를 통해서, 스마트 컨트랙 제작을 위한 솔리디티 언어를 배울수 있습니다., 코딩이 처음인 분들도 OK! 처음 배우는 솔리디티, 쉽게 시작해보세요. 강의 주제 📖 [사진] 이 강의에서

www.inflearn.com


super

super 은 함수를 오버라이딩 할 때 사용하며 super을 통해 원래 함수를 가지게 된다. 

아래 예제를 통하여 설명하도록 하겠다. 부자관계의 스마트 컨트렉이 있고, Son 컨트랙은 father 컨트랙 안에 who 함수를 상속받아 오버라이딩한다. 

// SPDX-License-Identifier:GPL-30
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");
    }
}

 

Son 컨트랙은 , 아버지의 FatherName 이벤트를 그대로 유지하고, 자신의 sonName 이벤트를 추가했다. 만약, Son 컨트랙 부분의 오러라이딩한 함수 who 안에 여러줄의 코드를 써야한다면, 매우 번거로워 진다. 

 

이때 사용할 수 있는것이  super 으로 상속받을 함수를 그자체로 가져온다. 

 

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

contract Father {
    event FatherName(string name);
    function who() public virtual{
        emit FatherName("KimDaeho");
    }
}

contract Mother {
    event MotherName(string name);
    function who() public virtual{
        emit MotherName("leeSol");
    }
}

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

 

 


상속의 순서

 

상속의 순서를 통하여 super가 어떻게 작동하는지에 대해서 알아보겠다. 

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

contract Father {
    event FatherName(string name);
    function who() public virtual{
        emit FatherName("KimDaeho");
    }
}

contract Mother {
    event MotherName(string name);
    function who() public virtual{
        emit MotherName("leeSol");
    }
}

contract Son is Father, Mother{
    
    function who() public override(Father,Mother){
        super.who();
    }
}

 

예시로 가족 관계의 스마트 컨트랙을 작성하고, Son 컨트랙은 Father 와 Mother를 상속 받는다.  각각 father와 mother은 동일하게 who 함수가 있고, 오버라이딩하여 super을 통해 son 컨트랙에 가져온다.

위에서 super를 사용하여 who 함수를 상속받을 때 어떤 스마트 컨트랙의 함수를 상속 받을까?

 

Mother의 것이 상속되어서 leeSol 이 반환된다.

이유는 Son is Father , Mother 이기 때문에 즉 Mother 두번째 (최신) 으로 상속 받았기에 그렇다.

 

'자기개발 > 블록체인' 카테고리의 다른 글

[Blockchain A-Z:블록체인 만들기 완벽강의] 불변원장 및 분산 P2P 네트워크  (0) 2024.07.13
[Blockchain A-Z:블록체인 만들기 완벽강의] SHA256 Hash 알고리즘  (0) 2024.07.13
[솔리디티 깨부수기] event2 - indexed  (0) 2024.06.04
[솔리디티 깨부수기] event 정의  (0) 2024.06.04
[솔리디티 깨부수기] 두 개 이상 상속하기  (0) 2024.05.28
'자기개발/블록체인' 카테고리의 다른 글
  • [Blockchain A-Z:블록체인 만들기 완벽강의] 불변원장 및 분산 P2P 네트워크
  • [Blockchain A-Z:블록체인 만들기 완벽강의] SHA256 Hash 알고리즘
  • [솔리디티 깨부수기] event2 - indexed
  • [솔리디티 깨부수기] event 정의
동굴러버의 백업단지
동굴러버의 백업단지
365일 중 364일 동굴에 있고 싶은 동굴러버의 속세와의 소통창구 겸 백업단지 저장소 (※급 잠수 및 와다다 백업 게시글 주의※)
  • 동굴러버의 백업단지
    새벽 1시 19분
    동굴러버의 백업단지
  • 전체
    오늘
    어제
    • 분류 전체보기 (120)
      • CS (0)
      • 자기개발 (97)
        • Linux (11)
        • Web (13)
        • Unity (24)
        • 블록체인 (37)
        • 포너블 (4)
        • 디지털포렌식 (0)
      • 문제 풀이 (16)
      • 잡다한 지식 (5)
      • 외출일지 (2)
  • 블로그 메뉴

    • 홈
    • 태그
  • 링크

  • 공지사항

  • 인기 글

  • 태그

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
동굴러버의 백업단지
[솔리디티 깨부수기] 상속 : super, 상속의 순서
상단으로

티스토리툴바