본 글은 생활코딩 강의를 정리한 글입니다.
어렴풋이 고정되는 값인가보다 생각하고만 넘겼던 static
을 이번에 확실히 짚고 넘어가려고 한다. 어렵게 생각할 것 없이 사진 한 장으로 정리해보자.
static이 있을 때와 없을 때의 차이점을 보자. 사진에는 Foo
클래스와 main 함수가 있는 StaticApp
클래스가 있다.
1) main 함수에서 static으로 선언된 변수를 사용할 수 있는가? -> Yes
2) main 함수에서 static이 없이 선언된 변수를 사용할 수 있는가? -> No
3) main 함수에서 static으로 선언된 메소드를 사용할 수 있는가? -> Yes
4) main 함수에서 static이 없이 선언된 메소드를 사용할 수 있는가? -> No
--> main 함수에서 static
이 없는 것은 사용불가 (예외 : main 함수 내에서 인스턴스를 만들면 사용할 수 있다..)
5) static으로 선언된 메소드 안에서 static으로 선언된 변수를 사용할 수 있는가? -> Yes
6) static으로 선언된 메소드 안에서 static 없이 선언된 변수를 사용할 수 있는가? -> No
7) static 없이 선언된 메소드 안에서 static으로 선언된 변수를 사용할 수 있는가? -> Yes
8) static 없이 선언된 메소드 안에서 static 없이 선언된 변수를 사용할 수 있는가? -> Yes
--> 그 외 클래스에서 static
이 없는 메소드에서는 자유롭다. 하지만 static
이 있는 메소드에서는 반드시 static
이 있는 변수를 사용해야 한다!