July 17, 2020
객체 생성에 관여하는 생성자 메소드가 private 접근제어를 가지면 객체를 생성할 수 없다는 뜻이 된다. 그러므로 객체를 생성하지 않고도 사용 가능하게 설계해야 한다. (모든 클래스의 멤버가 static 멤버가 되어야 한다)
non-static 멤버인 경우(인스턴스 메소드) : 객체 생성 후 접근 가능
static 멤버인 경우(클래스 메소드) : 객체 생성 없이 접근 가능(클래스 이름으로 접근)
클래스를 사용하는 시점에서 static 멤버는 먼저 자동으로 메모리에 로딩이 된다. 그 이후에 호출이 된다.
모든 멤버가 static 멤버이면 인위적으로 private 생성자로 만들어 객체 생성을 막을 수도 있다.
어떤 객체에 생성자 메소드가 private 이면 모든 멤버는 static가 붙은 멤버가 되어야 한다. (생성자 메소드가 private이면 객체 생성이 불가능하기 때문에 멤버 사용을 위해서는 static을 붙여야 한다는 뜻이 된다.)
자주 사용하는 객체나 동작은 static 멤버로 만들어서 사용한다.