블록체인 학습
0 XP

public 가시성

가시성(visibility) 지정자는 변수나 함수에 누가 접근할 수 있는지를 정합니다. Solidity에는 public, private, internal, external 네 가지 가시성이 있는데, 그중 public이 가장 개방적입니다. public으로 선언한 변수와 함수는 컨트랙트 내부에서도, 외부 계정이나 다른 컨트랙트에서도, 상속받은 자식 컨트랙트에서도 모두 접근할 수 있습니다.

public 상태 변수를 선언하면 Solidity 가 같은 이름의 getter 함수를 자동으로 만들어 줍니다. 따라서 외부에서 변수 값을 그냥 읽을 수 있습니다.

public 상태 변수와 자동 getter

public 상태 변수를 쓰면 값을 읽는 함수를 따로 작성하지 않아도 됩니다. string public name; 이라고만 쓰면 Solidity가 name() 이라는 읽기 함수를 만들어 주고, 외부에서는 이 함수를 호출해 값을 조회합니다. 다만 자동으로 생기는 것은 읽기 전용 함수라, 외부에서 값을 직접 바꾸지는 못합니다.

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;
 
contract Profile {
    // public 으로 선언하면 name() getter 가 자동 생성됩니다.
    string public name = "Alice";
 
    // public 함수도 외부에서 직접 호출할 수 있습니다.
    function greet() public view returns (string memory) {
        return name;
    }
}

public 함수

함수에도 public을 붙일 수 있습니다. public 함수는 외부에서 호출할 수 있을 뿐 아니라, 같은 컨트랙트 내부의 다른 함수에서도 직접 부를 수 있습니다. 안과 밖 모두에서 쓰고 싶은 함수에 알맞습니다.

값을 외부에 공개하고 싶다면 public, 숨기고 싶다면 다음 강의에서 배울 private 을 사용하세요.

Code Editor
에디터를 불러오는 중...
실행 결과

Run 버튼을 눌러 코드를 실행하세요.