Home > Java > Java > ☕️[Java] 클래스, 객체, 인스턴스

☕️[Java] 클래스, 객체, 인스턴스
Java Programming Language Backend

☕️[Java] 클래스, 객체, 인스턴스.

  • 클래스(Class), 객체(Object), 인스턴스(Instance)는 객체 지향 프로그래밍(Object-Oriented Programming, OOP)에서 중요한 개념이며, 서로 밀접하게 관련이 있지만 다른 의미를 가집니다.

🙋‍♂️ 객체 지향 프로그래밍(Object-Oriented Programming, OOP)

1️⃣ 클래스(Class)

  • 클래스(Class)는 “객체(Object)를 정의하기 위한 청사진(설계도)”입니다.
    • 클래스(Class)는 객체(Object)의 속성(필드)과 행동(메서드)을 정의합니다.
  • 즉, 클래스는 어떤 유형의 객체(Object)를 만들 것인지에 대한 정보를 가지고 있으며, 객체(Object)를 생성하는 데 사용되는 틀 역할을 합니다.

예시.

// 클래스 선언.
public class Car {
    // 필드(속성)
    String model;
    String color;
    
    // 메서드(행동)
    void drive() {
        System.out.println("The car is driving.");
    }
}
  • 위의 Car 클래스는 자동차의 모델과 색상을 나타내는 속성(필드)과, 자동차가 달리는 행동을 정의하는 메서드를 가지고 있습니다.
    • 이 자체는 실제 객체(Object)가 아니라 객체(Object)를 만들기 위한 설계도(blueprint, 청사진)입니다.

2️⃣ 객체(Object)

  • 객체(Object)는 클래스(Class)에 의해 생성된 실체로, 클래스의 인스턴스(Instance)라고도 불립니다.
  • 객체(Object)는 클래스(Class)에서 정의된 속성(필드)과 행동(메서드)를 실제로 가지고 있는 메모리 상의 실체입니다.
    • 즉, 클래스의 설계도(blueprint, 청사진)을 바탕으로 만들어진 실질적인 데이터입니다.
  • 객체(Object)는 클래스(Class)에서 정의된 구조에 따라 동작하며, 프로그램 내에서 데이터와 기능을 담당합니다.

객체(Object) 생성 예시.

public class Main {
    public static void main(String[] args) {
        // 객체 생성
        Car myCar = new Car(); // Car 클래스의 객체 생성.
        myCar.model = "Volvo xc60";
        myCar.color = "Black";
        myCar.drive(); // 출력: The car is driving
    }
}
  • 위 코드에서 Car myCar = new Car();Car 클래스(Class)의 객체(Object)를 생성합니다.
    • myCar 객체(Object)는 Car 클래스(Class)에서 정의한 속성(필드)과 행동(메서드)를 가지고 있으며, 프로그램에서 실제로 사용됩니다.

3️⃣ 인스턴스(Instance)

  • 인스턴스(Instance)는 특정 클래스(Class)에서 생성된 객체(Object)를 의미합니다.
    • 즉, 클래스(Class)의 인스턴스(Instance)는 그 클래스(Class)에 의해 생성된 실체 객체(Object)를 말합니다.
  • 흔히 인스턴스(Instance)와 객체(Object)는 같은 의미로 사용되지만, “인스턴스(Instance)”는 특정 클래스(Class)에서 만들어진 객체(Object)라는 의미에 좀 더 초점을 맞추고 있습니다.
  • 예를 들어, myCarCar 클래스의 인스턴스이며, 또한 객체입니다.

인스턴스(Instance) 예시.

Car myCar = new Car(); // Car 클래스의 인스턴스 생성.
Car yourCar = new Car(); // 또 다른 Car 클래스의 인스턴스 생성.
  • 위 코드에서 myCaryourCar는 모두 Car 클래스의 인스턴스(Instance)입니다.
    • 즉, 동일한 클래스(Class)에서 만들어진 여러개의 객체(인스턴스)를 생성할 수 있습니다.

4️⃣ 요약.

  • 클래스(Class) : 객체(Object)를 생성하기 위한 설계도(blueprint, 청사진)입니다. 속성(필드)과 행동(메서드)를 정의합니다.
  • 객체(Object) : 클래스(Class)에 의해 생성된 실체입니다. 프로그램 내에서 사용되며, 클래스의 인스턴스(Instance)라고도 불립니다.
  • 인스턴스(Instance) : 특정 클래스에서 생성된 객체(Object)를 가리키는 용어입니다. 클래스의 실체로서 메모리 내에 존재하는 객체(Object)를 의미합니다.
  • 객체(Object)와 인스턴스(Instance)는 서로 거의 같은 의미로 사용되며, 클래스(Class)는 이 객체(Object)들을 만들기 위한 설계도(blueprint, 청사진)입니다.