본문 바로가기
JAVA/객체지향 프로그래밍 (OOP) 기초

인스턴스 메서드 vs 클래스(static) 메서드

by DEVLIB 2025. 4. 13.
728x90

개념 요약

구분 인스턴스 메서드 클래스(static) 메서드
정의 방법 void method() static void method()
호출 방법 객체명.메서드() 클래스명.메서드()
객체 필요 여부 필요함 (new) 필요 없음
사용하는 변수 인스턴스 변수 사용 가능 인스턴스 변수 사용 불가
대표 예 s1.getName() Math.random(), Integer.parseInt()

인스턴스 메서드 예제

public class Person {
    String name;

    public Person(String name) {
        this.name = name;
    }

    // 인스턴스 메서드
    public void sayHello() {
        System.out.println("안녕하세요! 저는 " + name + "입니다.");
    }
}

사용 방법:

Person p1 = new Person("홍길동");
p1.sayHello();  // 객체를 통해 호출

클래스(static) 메서드 예제

public class MathUtil {
    // 클래스 메서드 (static)
    public static int square(int x) {
        return x * x;
    }
}

사용 방법:

int result = MathUtil.square(5);  // 객체 없이 호출
System.out.println(result);       // 출력: 25

인스턴스 vs static 비교 실습

public class Example {
    int value = 10;

    void instanceMethod() {
        System.out.println("인스턴스 값: " + value);
    }

    static void staticMethod() {
        // System.out.println("값: " + value); // 에러: static에서는 인스턴스 변수 사용 불가
        System.out.println("클래스 메서드입니다.");
    }
}
Example ex = new Example();
ex.instanceMethod();        // OK
Example.staticMethod();     // OK (객체 없이 호출 가능)

static 메서드 주의사항

  • 인스턴스 변수/메서드에 접근 불가
  • 객체의 상태에 의존하지 않는 기능(계산, 변환 등)에 적합

예: Math.sqrt(), Integer.parseInt("123")


언제 어떤 걸 쓰나요?

상황
추천 방식
객체마다 다른 값이 필요한 경우 인스턴스 메서드
모든 객체가 공통적으로 사용하는 기능 static 메서드
계산기, 유틸리티 함수, 변환기 등 static 메서드

마무리 요약

항목 인스턴스 메서드 클래스(static) 메서드
호출 방식 객체명.메서드() 클래스명.메서드()
객체 생성 필요 필요 불필요
인스턴스 변수 사용 가능 불가능

연습 아이디어

  • Calculator 클래스: add()는 static, showInfo()는 인스턴스 메서드로
  • Student 클래스: printName()은 인스턴스, schoolName()은 static으로
LIST

'JAVA > 객체지향 프로그래밍 (OOP) 기초' 카테고리의 다른 글

오버라이딩 개념  (0) 2025.04.13
extends 키워드로 상속하기  (0) 2025.04.13
생성자의 개념 및 오버로딩  (0) 2025.04.12
this 키워드  (0) 2025.04.12
객체 생성과 메서드 호출  (0) 2025.04.12