JAVA

객체지향 프로그래밍 (클래스와 인스턴스)란?

jki09871 2024. 7. 24. 10:00
 

클래스와 인스턴스의 개념을 이해하기 위해 간단한 예제를 통해 설명하겠습니다.

클래스와 인스턴스

  • 클래스 (Class): 클래스는 객체를 생성하기 위한 청사진 또는 설계도입니다. 클래스는 객체가 가져야 할 속성과 동작을 정의합니다.
  • 인스턴스 (Instance): 인스턴스는 클래스를 기반으로 생성된 실제 객체입니다. 클래스는 추상적 개념이고, 인스턴스는 구체적 실체입니다.

예제: Car 클래스

다음은 Car라는 클래스를 정의하고, 이를 기반으로 여러 인스턴스를 생성하는 예제입니다.

// Car 클래스 정의
public class Car {
    // 필드 (속성)
    private String model;
    private String color;
    private int year;

    // 생성자
    public Car(String model, String color, int year) {
        this.model = model;  
        this.color = color;
        this.year = year;
    }

    // 메서드 (동작)
    public void displayInfo() {
        System.out.println("Model: " + model);
        System.out.println("Color: " + color);
        System.out.println("Year: " + year);
    }
}

// Main 클래스 정의
public class Main {
    public static void main(String[] args) {
        // Car 클래스의 인스턴스 생성
        Car car1 = new Car("Toyota Corolla", "Red", 2020);
        Car car2 = new Car("Honda Civic", "Blue", 2021);

        // 인스턴스의 메서드 호출
        car1.displayInfo();
        System.out.println();
        car2.displayInfo();
    }
}

전체 프로세스 설명

1. 클래스 정의: Car 클래스는 model, color, year라는 필드를 가지며, 이 필드를 초기화하기 위한 생성자와 정보를 출력하기 위한 메서드를 정의합니다.

public class Car {
    // 필드 (속성)
    private String model;
    private String color;
    private int year;

    // 생성자
    public Car(String model, String color, int year) {
        this.model = model;  // 생성자 매개변수로 받은 값을 필드에 저장
        this.color = color;
        this.year = year;
    }

    // 메서드
    public void displayInfo() {
        System.out.println("Model: " + model);
        System.out.println("Color: " + color);
        System.out.println("Year: " + year);
    }
}

 

2. 인스턴스 생성: Car 클래스의 인스턴스를 생성할 때 생성자에 매개변수로 값을 전달합니다. 이 값들은 생성자의 매개변수로 받아들여지며, this 키워드를 사용하여 클래스의 필드에 저장됩니다.

public class Main {
    public static void main(String[] args) {
        // Car 클래스의 인스턴스 생성
        Car car1 = new Car("Toyota Corolla", "Red", 2020);
        Car car2 = new Car("Honda Civic", "Blue", 2021);
        
        // 인스턴스의 메서드 호출
        car1.displayInfo();
        System.out.println();
        car2.displayInfo();
    }
}

 

 

3. 매개변수와 this 키워드:

  • new Car("Toyota Corolla", "Red", 2020)은 Car 클래스의 생성자를 호출하여 car1 객체를 생성합니다.
  • 생성자 Car(String model, String color, int year)는 model, color, year 매개변수를 받아, 이 값들을 this.model, this.color, this.year에 할당합니다.
  • this는 현재 객체를 참조하며, 객체의 필드에 접근할 때 사용됩니다. 생성자에서 this.model = model;는 매개변수 model의 값을 현재 객체의 필드 model에 저장하는 것입니다

4. 메서드 호출:

  • car1.displayInfo();는 car1 객체의 displayInfo 메서드를 호출합니다. 이 메서드는 car1 객체의 필드 model, color, year의 값을 출력합니다.
  • car2.displayInfo();는 car2 객체의 displayInfo 메서드를 호출하여 car2의 필드 값을 출력합니다.

요약

  • Car car1 = new Car("Toyota Corolla", "Red", 2020);와 Car car2 = new Car("Honda Civic", "Blue", 2021);는 각각 Car 클래스의 인스턴스를 생성하고, 생성자에 전달된 값으로 객체의 필드를 초기화합니다.
  • this 키워드는 현재 객체를 참조하며, 생성자에서 매개변수 값을 객체의 필드에 할당하는 데 사용됩니다.
  • car1.displayInfo();와 car2.displayInfo();를 호출하면 각 객체의 필드에 저장된 값이 출력됩니다.

이 과정으로 인해 car1과 car2는 각각 서로 다른 값으로 초기화된 Car 객체가 되고, displayInfo 메서드는 이러한 초기화된 값을 출력하는 역할을 합니다.

출력 결과

Model: Toyota Corolla
Color: Red
Year: 2020

Model: Honda Civic
Color: Blue
Year: 2021

 

'JAVA' 카테고리의 다른 글

객체지향(상속)  (0) 2024.07.24
객체지향(지역 변수, 상수)  (1) 2024.07.24
컬렉션(List, Set, Queue, Map )  (1) 2024.07.23
배열(Arrays)  (0) 2024.07.23
반복문 (Loops)  (1) 2024.07.23