Ethereum-Solidity 퀴즈 Q17: Solidity가 사용하는 visibility modifiers는 무엇인가요?
발행: (2026년 1월 10일 오후 08:34 GMT+9)
3 min read
원문: Dev.to
Source: Dev.to
가시성 한정자 개요
| 한정자 | 계약 내부 | 파생 계약 | 다른 계약 | 외부 |
|---|---|---|---|---|
| public | ✅ | ✅ | ✅ | ✅ |
| internal | ✅ | ✅ | ❌ | ❌ |
| private | ✅ | ❌ | ❌ | ❌ |
| external | ❌ (this를 통해) | ❌ | ✅ | ✅ |
Solidity는 함수와 상태 변수에 대한 접근을 제어하기 위해 네 가지 가시성 한정자를 사용합니다:
- public – 계약 내부, 다른 계약, 그리고 외부에서 호출할 수 있습니다.
- external – 다른 계약 및 외부에서 호출할 수 있으며, 동일한 계약 내부에서는 this를 통해서만 호출할 수 있습니다.
- internal – 동일한 계약 및 파생 계약(상속) 내부에서 호출할 수 있으며, 다른 계약이나 외부에서는 호출할 수 없습니다.
- private – 동일한 계약 내부에서만 호출할 수 있고, 파생 계약, 다른 계약, 외부에서는 호출할 수 없습니다.
중요한 참고 사항
- 상태 변수는 public, internal, private 중 하나가 될 수 있으며 (external은 사용할 수 없습니다).
- 함수는 public, internal, private, external 중 하나가 될 수 있습니다.
public상태 변수는 자동으로 getter 함수를 생성합니다.external함수는 내부 함수 복사본을 만들지 않기 때문에public함수보다 가스 효율이 높습니다.private및internal은 보안을 제공하지 않습니다; 블록체인 데이터는 항상 공개되어 있으며, 이 한정자는 함수 호출을 통한 접근만 제한합니다.- 외부에서 호출될 함수는
external을 사용하세요. - 상속을 통해 사용되는 헬퍼 함수는
internal을 사용하세요. private은 신중히 사용하십시오—보통 내부 헬퍼 함수에만 사용합니다.- 공개적으로 접근이 필요한 상태 변수는
public을 사용하세요. private은 보안을 제공하지 않으며, 단지 실수로 호출되는 것을 방지할 뿐임을 기억하세요.