Solidity 솔리디티 강좌 16강 : 상속의 순서
이번엔 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 Mother {
event MotherName(string name);
function who() public virtual {
emit MotherName("leeSol");
}
}
contract Son is Father,Mother {
event sonName(string name);
function who() public override (Father,Mother){
super.who();
//emit sonName("KimJin");
}
}
Father, Mother
컨트랙트가 있고, Son
컨트랙트는 Father, Mother
컨트랙트를 상속한다. 그리고 Father, Mother
컨트랙트 모두 who
함수가 존재하는데, 이 경우에 Son
컨트랙트의 super.who()
는 어떤 것을 상속받아 올까 ?
👉 결과
가장 최신으로 상속을 한 컨트랙트인 Mother
컨트랙트의 who
함수가 실행되었다. 이처럼 최근에 상속을 한, 즉 is 뒤에 나열된 컨트랙트 중 맨 뒤의 컨트랙트의 것이 super를 통해 상속된다.
출처 및 참고 자료