Solidity 솔리디티 강좌 10강 : 상속의 정의

flowing1ife·2023년 7월 7일
0

[ Solidity 깨부수기 ]

목록 보기
10/29
post-thumbnail

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


상속의 정의

📌 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{

}

FatherSon 컨트랙트를 만들었다.

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" 인 것을 알 수 있다.


출처 및 참고 자료

profile
👩🏻‍💻 Backend Engineer, Contract Developer

0개의 댓글