Solidity 솔리디티 강좌 15강 : super 상속
이번엔 solidity의 super 상속에 대해 알아보도록 하자.
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"이 출력된 것을 볼 수 있다.
출처 및 참고 자료