메소드와 인스턴스의 차이

지훈김·2024년 8월 23일

메서드(Method)와 인스턴스(Instance)는 객체 지향 프로그래밍에서 서로 다른 개념입니다. 이 두 개념의 차이를 이해하는 것은 자바와 같은 객체 지향 언어에서 객체와 클래스를 효과적으로 활용하는 데 중요합니다. 아래에서 메서드와 인스턴스의 차이를 구체적으로 설명하겠습니다.

1. 인스턴스 (Instance)

인스턴스는 클래스의 구체적인 객체를 의미합니다. 클래스는 객체의 설계도(클래스 정의)를 제공하며, 인스턴스는 이 설계도를 바탕으로 실제로 메모리에 생성된 객체입니다.

  • 클래스: 객체의 구조와 동작을 정의하는 청사진입니다. 예를 들어, Person 클래스는 사람의 속성과 행동을 정의합니다.

    class Person {
        String name;
        int age;
        
        void greet() {
            System.out.println("Hello, my name is " + name);
        }
    }
  • 인스턴스: 클래스의 정의를 바탕으로 생성된 실제 객체입니다. Person 클래스에서 인스턴스를 생성하면, Person 클래스의 구조를 가진 실제 객체가 만들어집니다.

    public class Main {
        public static void main(String[] args) {
            Person person1 = new Person(); // person1은 Person 클래스의 인스턴스입니다.
            person1.name = "Alice";
            person1.age = 30;
            person1.greet(); // 출력: Hello, my name is Alice
        }
    }

2. 메서드 (Method)

메서드는 클래스 또는 객체가 수행할 수 있는 행동이나 작업을 정의하는 함수입니다. 메서드는 클래스나 인스턴스와 관련된 동작을 정의하고, 데이터를 처리하거나 특정 기능을 수행하는 데 사용됩니다.

  • 인스턴스 메서드: 특정 인스턴스에 속하며, 인스턴스 변수(객체마다 개별적으로 존재하는 변수)에 접근할 수 있습니다. 객체가 생성된 후에 호출할 수 있습니다.

    class Person {
        String name;
    
        void greet() { // 인스턴스 메서드
            System.out.println("Hello, my name is " + name);
        }
    }
  • 클래스 메서드 (Static Method): 클래스에 소속되며, 인스턴스 없이 클래스 이름으로 호출할 수 있습니다. 클래스 변수에 접근할 수 있지만, 인스턴스 변수에는 접근할 수 없습니다.

    class MathUtils {
        static int add(int a, int b) { // 클래스 메서드
            return a + b;
        }
    }
    
    public class Main {
        public static void main(String[] args) {
            int sum = MathUtils.add(5, 3); // 인스턴스 생성 없이 호출
            System.out.println(sum); // 출력: 8
        }
    }

요약

  • 인스턴스는 클래스의 구체적인 객체로서, 클래스의 속성과 메서드를 실제로 사용하는 개별적인 객체입니다.
  • 메서드는 클래스나 인스턴스의 동작을 정의하는 함수로, 객체의 행동을 구현하는 데 사용됩니다. 인스턴스 메서드는 객체의 상태를 조작할 수 있으며, 클래스 메서드는 객체 없이 클래스 자체에서 호출됩니다.

인스턴스와 메서드는 함께 사용되어 객체 지향 프로그래밍의 핵심 개념을 구성합니다. 인스턴스는 상태를 유지하고 메서드는 이 상태를 기반으로 동작을 수행합니다.

0개의 댓글