Solidity 기본 문법 정리 (4)

코딩하는 남자·2022년 5월 6일
0

BlockChain Develop

목록 보기
5/6
post-thumbnail

✏️ Storage vs Memory

솔리디티에는 변수를 저장할 수 있는 공간으로 storagememory 두 가지가 있다. Storage 는 블록체인 상에 영구적으로 저장되는 변수, Memory 는 임시적으로 저장되는 변수로, 컨트랙트 함수에 대한 외부 호출들이 일어나는 사이에 지워진다. 두 변수는 마치 컴퓨터 하드 디스크와 RAM과 같다.

상태 변수(함수 외부에 선언된 변수)는 초기 설정상 storage 로 선언되어 블록체인에 영구적으로 저장되는 반면, 함수 내에 선언된 변수memory 로 자동 선언되어서 함수 호출이 종료되면 사라진다.

함수를 선언할 때 매개변수나 리턴값으로 string 을 사용하면 error 가 났을 것이다. 이럴 때 storagememory 를 명시적으로 선언해주어야 한다.


✏️ 상속

객체 지향 프로그래밍 언어인 솔리디티 역시 상속을 지원한다.
상속 기능을 사용하면 타 언어의 class 역할을 하는 contract 를 여러개로 분리해서 사용할 수 있다.

먼저 Pasta 컨트랙트를 생성했고 이름을 정하는 setName(), 맛을 출력하는 taste() 메서드를 추가했다.

아래의 CreamPastaPasta 컨트랙트를 상속받았는데 is pasta 키워드만 추가해서 간단하게 구현했다.

이제 Pasta 에서 정의한 taste() 메서드를 오버라이딩 하려고 한다.

📌 메소드 오버라이딩

메소드를 오버라이딩하려면 오버라이딩 하려는 메소드 (부모 메소드)에 virtual 키워드를 달아줘야한다. 참고로 returns 키워드를 제외한 (public, virtual, pure 같은 키워드는 순서가 바뀌어도 상관없다)

그리고 오버라이딩 받는 자식 메소드에 override 키워드로 명시하면 메소드 오버라이딩이 가능해진다.


profile
"신은 주사위 놀이를 하지 않는다."

0개의 댓글