static 이 붙은 printStatic 함수는 바로 호출 가능하지만, print 함수는 인스턴스를 생성해야만 호출이 가능하다.
new 키워드는 heap 공간에 할당되지만 static 키워드는 메모리 공간이 따로 존재하기 때문에, 컴파일러가 static 키워드가 붙은 함수나 class나 변수를 프로그램 실행과 동시에 static 메모리 공간에 적재 시키기 때문이다.
이 메모리 공간은 프로그램이 끝날 때까지 절대 지워지지 않으며 static 키워드가 붙은 함수나 class에서는 모두 static 키워드가 붙은 것들끼리만 참조 가능하다.
public
어떤 클래스나 멤버에서도 사용 가능하다.
defalut
같은 패키지 내에 있는 클래스나 멤버만 접근 가능하다. 다른 패키지에선 print 함수 접근 불가함
protected (클래스에 적용 X)
같은 패키지 내 또는 다른 패키지지만 해당 클래스를 상속받은 클래스에 한해서 접근 가능하다.
private (클래스에 적용 X)
같은 클래스 내부에서만 접근이 가능하다. 자기 자신 클래스에서만 접근 가능.