Solidity 솔리디티 강좌 10강 : 상속의 정의
이번엔 solidity의 상속의 정의에 대해 알아보도록 하자.
상속이란 윗사람이 죽으면 그 윗사람의 재산이나 권리를 아랫사람에게 주듯이 smart contract에서는 변수와 함수들을 상속한다.
// SPDX-License-Identifier: GPL-3.0
pragma solidity >= 0.7.0 < 0.9.0;
contract Father{
string public familyName = "Kim";
string public givenName = "Jung";
uint256 public money = 100;
function getFamilyName() view public returns(string memory){
return familyName;
}
function getGivenName() view public returns(string memory){
return givenName;
}
function getMoney() view public returns(uint256){
return money;
}
}
contract Son is Father{
}
Father
과 Son
컨트랙트를 만들었다.
Father
컨트랙트에는 각각 "Kim","Jung",100의 값을 지닌 변수 familyName, givenName, money
가 선언되었다. 또한 각각 familyName, givenName, money
를 return하는 함수 getFamilyName, getGivenName, getMoney
가 존재한다.
Son
컨트랙트는 Father
컨트랙트를 상속받았다. 이처럼 상속을 할 때에는 contract 컨트랙트명 is 상속받고자 하는 컨트랙트 명
순으로 작성하면 된다.
👉 결과
Son
컨트랙트를 배포하면 이처럼 Father
컨트랙트에 있는 모든 것을 사용할 수 있다. Son
컨트랙트가 Father
컨트랙트를 상속 받았기 때문이다.
// SPDX-License-Identifier: GPL-3.0
pragma solidity >= 0.7.0 < 0.9.0;
contract Father{
string public familyName = "Kim";
string public givenName = "Jung";
uint256 public money = 100;
//추가
constructor(string memory _givenName) public {
givenName = _givenName;
}
function getFamilyName() view public returns(string memory){
return familyName;
}
function getGivenName() view public returns(string memory){
return givenName;
}
function getMoney() view public returns(uint256){
return money;
}
}
//추가
contract Son is Father("James"){
}
이번엔 Father
컨트랙트에 constructor 생성자를 추가해보았다. 이럴 경우 contract 컨트랙트 명 is 상속받고자하는 컨트랙트 명(생성자)
순으로 작성해 상속을 받으면 된다.
👉 결과
이처럼 다시 배포한 후, 결과를 확인해보면 변수givenName
의 값이 초기 생성자의 인자로 준 값인 "James" 인 것을 알 수 있다.
출처 및 참고 자료