1. 클래스 메서드와 인스턴스 메서드
변수에서 그랬던 것과 같이, 메서드 앞에 static이 붙어 있으면 클래스 메서드이고, 붙어있지 않으면 인스턴스 메서드이다.
→ 클래스 메서드는 객체를 생성하지 않고도 '클래스이름.메서드이름(매개변수)'로 호출이 가능하다.
→ 인스턴스 메서드는 반드시 객체를 생성해야만 호출이 가능하다.
2. 클래스 메서드 및 클래스 변수의 특징
1) 클래스를 설계할 때, 멤버변수 중 모든 인스턴스에 공통으로 사용하는 것에 static을 붙인다.
→ 모든 인스턴스에서 같은 값이 유지되어야 하는 변수는 static을 붙여준다.
2) 클래스 변수(static 변수)는 인스턴스를 생성하지 않아도 사용할 수 있다.
→ static이 붙은 변수는 클래스가 메모리에 올라갈 때 자동적으로 생성된다.
3) 클래스 메서드(static 메서드)는 인스턴스 변수를 사용할 수 없다.
→ 클래스 메서드 호출 시, 인스턴스 메서드가 존재하지 않을 수 있기에 인스턴스 변수를 사용할 수 없다.
4) 메서드 내에서 인스턴스 변수를 사용하지 않는다면, static을 붙이는 것을 고려한다.
→ 인스턴스 메서드는 실행 시 호출되어야 할 메서드를 찾는 과정이 추가적으로 필요하기에 시간이 더 걸린다.
- 클래스의 멤버변수 중 모든 인스턴스에 공통된 값을 유지해야 하는 것이 있는지 살펴보고 있으면, static을 붙여준다.
- 작성한 메서드 중에서 인스턴스 변수나 인스턴스 메서드를 사용하지 않는 메서드에 static을 붙일 것을 고려한다.
참고문헌 : 남궁성(2016), Java의 정석, 도우출판