본문 바로가기
Blockchain/Solidity

접근한정자

by 잘먹는 개발자 에단 2024. 9. 18.

public

- 누구나 접근할 수 있다.

- 컨트랙트 내의 다른 함수, 외부 컨트랙트 또는 계정이 호출할 수 있다.

 

* 특징

- 상태 변수에 적용하면, 자동으로 getter 함수가 생성된다.

- 함수는 컨트랙트 내부와 외부에서 호출할 수 있다.

 

uint public totalSupply; // 상태변수는 자동으로 getter를 생성한다.

function myFunction() public{
	// 누구나 호출 가능한 함수이다.
}

 

 

private

- 오직 컨트랙트 내에서만 접근할 수 있다.

- 상속받은 자식 컨트랙트도 접근할 수 없다.

 

* 특징

- 다른 컨트랙트나 외부 계정에서 호출할 수 없다.

- 해당 컨트랙트 내에서만 접근 가능하다.

uint private _totalSupply; // 이 컨트랙트 내에서만 접근 가능하다.

function myFunction() private{
	// 이 컨트랙트 내에서만 호출 가능하다. 
}

 

 

 

internal

- 같은 컨트랙트나 상속받은 자식 컨트랙트에서만 접근할 수 있다. 

 

* 특징

- private와 달리, 자식 컨트랙트에서도 접근 가능하다.

uint internal totalSupply; // 이 컨트랙트 및 상속받은 컨트랙트에서 접근 가능하다.

function myFunction() internal {
	// 이 컨트랙트 및 상속 받은 컨트랙트에서 호출 가능하다.
}

 

 

 

external

- 오직 외부에서만 접근할 수 있다.

- 컨트랙트 내부에서 직접 호출할 수 없다.

 

* 특징

- 컨트랙트 외부에서만 호출할 수 있다.

- 내부에서 호출하려면 this.myFunction()과 같은 방식으로 호출해야 한다. 

function myFunction() external{
	// 컨트랙트 외부에서만 호출 가능
}