메서드(Method)와 인스턴스(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
}
}
메서드는 클래스 또는 객체가 수행할 수 있는 행동이나 작업을 정의하는 함수입니다. 메서드는 클래스나 인스턴스와 관련된 동작을 정의하고, 데이터를 처리하거나 특정 기능을 수행하는 데 사용됩니다.
인스턴스 메서드: 특정 인스턴스에 속하며, 인스턴스 변수(객체마다 개별적으로 존재하는 변수)에 접근할 수 있습니다. 객체가 생성된 후에 호출할 수 있습니다.
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
}
}
인스턴스와 메서드는 함께 사용되어 객체 지향 프로그래밍의 핵심 개념을 구성합니다. 인스턴스는 상태를 유지하고 메서드는 이 상태를 기반으로 동작을 수행합니다.