들어가기에 앞서
참고한 자료를 바탕으로 비전문가가 정리한 글이므로 오류가 있을 수 있습니다.
오류에 대한 지적 사항은 언제든지 환영합니다. 부디 댓글로 알려주시길 바랍니다. 감사합니다.
클래스 메소드(Static Method)
일반적으로 클래스에 선언된 메소드나 객체 변수(클래스에 선언된 변수)를 호출할 때는 그 클래스의 객체 생성이 선행되어야지만 가능하다.
하지만, 사칙연산, 날짜 구하기, 숫자에 달러기호 표시하기 등 단순한 유틸리티성 메소드를 사용할 때는 굳이 인스턴스를 매번 생성하여 해당 인스턴스에 그 값을 저장할 이유가 없다.
따라서, 유틸리티성 메소드는 스태틱 메소드로 많이 작성하며 메소드 앞에 static 키워드를 붙이면 간단하게 스태틱 메소드를 선언할 수 있다.
import java.text.SimpleDateFormat;
import java.util.Date;
class Util {
public static String getCurrentDate(String fmt) {
SimpleDateFormat sdf = new SimpleDateFormat(fmt);
return sdf.format(new Date());
}
}
public class Sample {
public static void main(String[] args) {
System.out.println(Util.getCurrentDate("yyyyMMdd")); // 오늘 날짜 출력
}
}
SQL
복사
이 때, 스태틱 메서드 안에서는 객체변수 접근이 불가능 하다는 것을 유의해야 한다.
스태틱 메소드는 인스턴스가 생성되기 전에 만들어지기 때문에, 생성되지 않은(존재하지 않는) 인스턴스 변수에 접근하는 것과 마찬가지이기 때문이다.
요약
•
클래스(static)메소드,인스턴스 메소드
◦
둘의 차이는 객체 생성(인스턴스)를 하는지 여부로 갈림
◦
클래스 메소드는 객체 생성을 안 하는 static 메소드 → 인스턴스 멤버 접근 불가능
◦
인스턴스 메소드는 객체 생성 → 인스턴스 멤버 접근 가능