internal
contract의 해당 내용을 비공개 한다는 의미이다.
contract 의 내부에서만 사용한다는 의미이다.
stage variable 은 기본이 internal 이다.
상속받은 contract 에서 사용할 수 있다.(protected 와 비슷)
private
contract의 해당 내용을 비공개 한다는 의미이다.
contract 의 내부에서만 사용한다는 의미이다.
상속받은 contract 에서 사용할 수 없다.
external
contract 의 interface 로 외부 공개
contract 의 외부에서 사용한다는 의미이다.
state variable 은 external 이 될 수 없다.
contract 내부에서 사용하려면 this 키워들를 이용해야 한다.
contract MyExample
{
uint external value; // 에러 발생
function func1() external
{
}
function func2() public
{
this.func1(); // external 함수는 this 키워드를 사용해야 한다.
func1(); // 에러 발생
}
}
public
contract 의 interface 로 외부 공개
contract 외부, 내부 모두 사용하는 interface 이다.
state variable public 이면 getter 함수가 자동 생성된다. 생성되는 이름은 stage variable 과 동일하다. contract 내부에서 사용할 경우 this 를 사용해야 한다.
contract MyExample
{
uint public value;
function func1() public
{
this.value(); // getter 호출
}
function func2() public
{
func1();
}
}
'Solidity' 카테고리의 다른 글
[Solidity] 다른 contract 와 상호작용하기 (0) | 2022.12.09 |
---|---|
[Solidity] view 와 pure (0) | 2022.12.08 |