클래스와 객체
프로그래밍 언어에서 클래스(Class)와 객체(Object)는 객체 지향 프로그래밍(Object-Oriented Programming, OOP)의 핵심 개념입니다. 이를 이해하면 복잡한 문제를 더 구조적이고 효율적으로 해결할 수 있습니다. 이 글에서는 클래스와 객체의 개념을 설명하고, 자바(Java)에서 이를 다루는 방법을 예시와 함께 소개합니다.
클래스(Class)란?
클래스는 객체를 생성하기 위한 청사진(Blueprint)이나 설계도입니다. 클래스는 데이터(필드)와 이 데이터를 조작하는 메서드로 구성됩니다. 예를 들어, 현실 세계에서 "자동차"는 하나의 클래스에 해당할 수 있습니다. 이 클래스는 다음과 같은 속성과 동작을 가질 수 있습니다:
- 속성(필드): 색상, 제조사, 속도
- 동작(메서드): 가속하기, 브레이크 밟기, 방향 전환
자바에서 클래스는 class
키워드를 사용하여 정의됩니다.
public class Car {
// 필드
String color;
String manufacturer;
int speed;
// 메서드
void accelerate() {
speed += 10;
System.out.println("속도가 증가했습니다. 현재 속도: " + speed);
}
void brake() {
speed -= 10;
if (speed < 0) {
speed = 0;
}
System.out.println("속도가 감소했습니다. 현재 속도: " + speed);
}
}
객체(Object)란?
객체는 클래스로부터 생성된 실제 사용 가능한 인스턴스(instance)입니다. 자동차라는 클래스를 정의한 후, "빨간 자동차"와 "파란 자동차"는 각각 클래스의 인스턴스, 즉 객체가 됩니다. 객체는 클래스가 정의한 속성과 메서드를 사용하여 동작합니다.
자바에서 객체는 new
키워드를 사용하여 생성됩니다.
public class Main {
public static void main(String[] args) {
// Car 클래스의 객체 생성
Car myCar = new Car();
// 객체의 필드 초기화
myCar.color = "빨간색";
myCar.manufacturer = "현대";
myCar.speed = 0;
// 객체의 메서드 호출
myCar.accelerate();
myCar.brake();
}
}
출력 결과는 다음과 같습니다:
클래스와 객체의 관계
클래스와 객체의 관계는 "설계도와 제품"에 비유할 수 있습니다.
- 클래스는 설계도이며, 객체는 설계도를 기반으로 만들어진 실제 제품입니다.
- 클래스는 객체의 구조와 동작을 정의하고, 객체는 이를 활용하여 실제 작업을 수행합니다.
자바에서 클래스와 객체 활용하기
자바에서 클래스와 객체를 사용하는 일반적인 과정은 다음과 같습니다:
- 클래스 정의: 객체의 구조와 동작을 정의합니다.
- 객체 생성: 클래스의 인스턴스를 생성합니다.
- 필드 및 메서드 사용: 생성된 객체를 통해 데이터를 저장하거나 조작합니다.
다음은 또 다른 간단한 예입니다:
public class Person {
// 필드
String name;
int age;
// 메서드
void introduce() {
System.out.println("안녕하세요, 제 이름은 " + name + "이고, 나이는 " + age + "살입니다.");
}
}
public class Main {
public static void main(String[] args) {
// Person 클래스의 객체 생성
Person person = new Person();
// 객체의 필드 초기화
person.name = "홍길동";
person.age = 25;
// 객체의 메서드 호출
person.introduce();
}
}
출력 결과는 다음과 같습니다:
마치며
클래스와 객체는 자바를 포함한 객체 지향 프로그래밍 언어에서 매우 중요한 요소입니다. 클래스를 사용하면 코드 재사용성을 높이고, 객체를 사용하면 데이터와 동작을 논리적으로 묶을 수 있습니다. 자바의 클래스와 객체를 잘 활용하면 복잡한 문제도 체계적으로 해결할 수 있습니다.
'개발 부트캠프 > 백엔드' 카테고리의 다른 글
[Java] 상속, 오버로딩, 오버라이딩 (1) | 2025.01.03 |
---|---|
[Java] static (0) | 2025.01.03 |
[Java] 패키지 & 접근 제어자 (0) | 2025.01.03 |
[Java] 생성자 (0) | 2025.01.03 |
[Java] GC(Garbage Collection) (2) | 2024.12.06 |