✅ 인스턴스 메서드


✏️ DecoUtil1

package static2;

public class DecoUtil1 {

  public String deco(String str) {
    String result = "*" + str + "*";
    return result;
  }
}

deco()는 문자열을 꾸미는 기능을 제공한다. 문자열이 들어오면 앞 뒤에 *을 붙여서 반환한다.



✏️ DecoMain1

package static2;

public class DecoMain1 {

  public static void main(String[] args) {
    String s = "hello java";
    DecoUtil1 utils = new DecoUtil1();
    String deco = utils.deco(s);

    System.out.println("before: " + s);
    System.out.println("after: " + deco);
  }
}



🖥️ 실행 결과

deco() 메서드를 호출하기 위해서는 DecoUtil1의 인스턴스를 먼저 생성해야 한다.
그런데 deco()라는 기능은 멤버 변수도 없고, 단순히 기능만 제공할 뿐이다. 인스턴스가 필요한 이유멤버 변수(인스턴스 변수)등을 사용하는 목적이 큰데, 이 메서드는 사용하는 인스턴스 변수도 없고, 단순히 기능만 제공한다.



📚 인스턴스 메서드

static이 붙지 않은 메서드는 인스턴스를 생성해야 호출할 수 있다. 이것을 인스턴스 메서드라 한다.




✅ static 메서드


✏️ DecoUtil2

package static2;

public class DecoUtil2 {

  public static String deco(String str) {
    String result = "*" + str + "*";
    return result;
  }
}

DecoUtil2는 메서드 앞에 static이 붙어있다. 이렇게 하면 정적 메서드를 만들 수 있다.
그리고 이 정적 메서드는 정적 변수처럼 인스턴스 생성 없이 클래스 명을 통해서 바로 호출할 수 있다.



✏️ DecoMain2

package static2;

public class DecoMain2 {

  public static void main(String[] args) {
    String s = "hello java";
    String deco = DecoUtil2.deco(s);

    System.out.println("before: " + s);
    System.out.println("after: " + deco);
  }
}



🖥️ 실행 결과

Decoutil2.deco(s) 코드를 보자.
static이 붙은 정적 메서드는 객체 생성 클래스명 + .(dot) + 메서드 명으로 바로 호출할 수 있다. 정적 메서드 덕분에 불필요한 객체 생성 없이 편리하게 메서드를 사용했다.



📚 클래스 메서드

메서드 앞에도 static을 붙일 수 있다. 이것을 정적 메서드 또는 클래스 메서드라 한다. 정적 메서드라는 용어는 static이 정적이라는 뜻이기 때문이고, 클래스 메서드라는 용어는 인스턴스 생성 없이 마치 클래스에 있는 메서드를 바로 호출하는 것처럼 느껴지기 때문이다.

profile
매일 성장하는 주니어 개발자의 기록📝

0개의 댓글