클래스와 인스턴스의 개념을 이해하기 위해 간단한 예제를 통해 설명하겠습니다.
클래스와 인스턴스
- 클래스 (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 |