본문 바로가기
개발

Java 메소드 인스턴스 메소드와 정적 메소드의 차이 이해하기

by hes3518 2024. 11. 13.
728x90
반응형

Java 메소드: 인스턴스 메소드와 정적 메소드의 비교

안녕하세요! 오늘은 Java 프로그래밍에서 자주 접하게 되는 두 가지 메소드, 즉 **인스턴스 메소드(Instance Methods)**와 **정적 메소드(Static Methods)**의 차이에 대해 알아보겠습니다. 이 두 가지 메소드는 프로그래밍의 기초 중 하나로, 객체지향 프로그래밍에서 매우 중요한 역할을 합니다. 자, 그럼 시작해보죠!

먼저, 인스턴스 메소드란?

인스턴스 메소드는 특정 클래스로부터 생성된 객체(instance)와 관련된 메소드입니다. 이 메소드를 사용하기 위해서는 반드시 인스턴스를 먼저 만들어야 하며, 객체를 통해 호출할 수 있습니다.

코드 예시

class Foo {
    String fooName = "";

    public void changeName(String name) {
        this.fooName = name;
    }
}

public class Bar {
    public static void main(String[] args) {
        Foo instance = new Foo();
        instance.changeName("Instance of Foo");
        System.out.println(instance.fooName);
    }
}

결과

Instance of Foo

여기서 changeName 메소드는 인스턴스 메소드이며, Foo 클래스의 인스턴스를 통해 호출되었습니다. 이렇듯 인스턴스 메소드는 객체와 깊은 연관이 있습니다.

정적 메소드란 무엇일까요?

정적 메소드는 클래스에 속한 메소드로, 객체를 만들지 않고도 호출할 수 있는 메소드입니다. 클래스 이름을 통해 직접 호출할 수 있으며, 프로그램 전반에서 공통적으로 사용할 수 있는 유틸리티 메소드 등을 구현할 때 주로 사용됩니다.

코드 예시

class Foo {
    public static String fooName = "";

    public static void changeName(String name) {
        fooName = name;
    }
}

public class Bar {
    public static void main(String[] args) {
        Foo.changeName("Static called");
        System.out.println(Foo.fooName);
        
        Foo instance = new Foo();
        instance.changeName("Instance called");
        System.out.println(instance.fooName);
    }
}

결과

Static called
Instance called

changeName 메소드는 정적 메소드로써, 클래스명의 호출을 통해 쉽게 접근할 수 있었습니다.

인스턴스 메소드와 정적 메소드의 비교

  1. 호출 방식:
    • 인스턴스 메소드는 객체를 통해 호출합니다.
    • 정적 메소드는 클래스 이름 또는 객체를 통해 호출할 수 있습니다.
  2. 오버라이드 가능성:
    • 인스턴스 메소드는 오버라이드가 가능합니다.
    • 정적 메소드는 오버라이드가 불가능하며, 상위 클래스의 정적 메소드가 호출됩니다.
  3. 메모리 관리:
  • 인스턴스 메소드는 객체가 생성될 때 메모리에 할당됩니다.
  • 정적 메소드는 클래스가 로드될 때 메모리에 할당됩니다.

마무리하며

인스턴스 메소드와 정적 메소드는 각각의 쓰임새와 특성을 가지고 있습니다. 객체지향 프로그래밍을 잘 활용하기 위해서는 이 두 가지 메소드의 차이를 이해하고 적절하게 사용할 수 있어야 합니다. 다음 포스트에서는 이와 관련해 객체지향 원칙인 SOLID에 대해서도 이야기해보겠습니다.

여러분의 소중한 피드백과 질문은 언제든지 환영합니다! 댓글로 남겨주시면 기쁜 마음으로 답변해드리겠습니다. 그럼 다음 포스트에서 만나요!

728x90
반응형