자바에서 클래스와 객체의 차이는 무엇인가요?
자바에서 클래스(Class)와 객체(Object)는 객체지향 프로그래밍의 핵심 개념으로, 이 둘은 밀접하게 연관되어 있지만 엄연히 다른 개념입니다.
각자의 역할과 차이를 이해하는 것은 자바를 비롯한 객체지향 프로그래밍 언어를 효과적으로 사용하는 데 매우 중요합니다.
1. 클래스(Class)란? - 설명: 클래스는 객체를 생성하기 위한 청사진(설계도) 또는 템플릿 입니다.
- 역할: 속성(멤버 변수)과 동작(메서드)을 정의해 놓은 일종의 데이터 타입입니다.
- 특징: - 메모리를 차지하지 않습니다.
- 객체를 생성하기 위한 설계도 역할을 하므로, 클래스 자체는 실행 가능한 독립체가 아닙니다.
- 예를 들어, `class Car`는 자동차라는 개념을 추상화하여 속성(색상, 속도, 모델명 등)과 기능(가속, 정지 등)을 정의합니다.
```java public class Car { String color; int speed; void accelerate() { speed += 10; } } ``` 2. 객체(Object)란? - 설명: 클래스라는 설계도를 바탕으로 생성된 실제 메모리상에 존재하는 인스턴스(instance) 입니다.
- 역할: 프로그램 실행 시점에 메모리(heap 영역)에 생성되어, 클래스에서 정의한 속성과 동작을 구체적으로 가지며 동작할 수 있습니다.
- 특징: - 클래스의 인스턴스입니다.
- 각각 고유한 상태(속성값)를 가질 수 있습니다.
- 예를 들어, `Car` 클래스의 객체 `myCar`는 특정 색상과 속도를 가진 실제 자동차 한 대를 의미합니다.
```java public class Main { public static void main(String[] args) { Car myCar = new Car(); // 객체 생성 myCar.color = "Red"; // 속성 값 지정 myCar.accelerate(); // 메서드 호출 } } ``` 3. 클래스와 객체의 주요 차이점 정리 | 구분 | 클래스(Class) | 객체(Object) | |-------------|----------------------------------------------|---------------------------------------------| | 정의 | 객체를 생성하기 위한 설계도 또는 템플릿 | 클래스를 기반으로 실제 메모리에 생성된 인스턴스 | | 메모리 점유 | 점유하지 않음 | 점유함 | | 역할 | 속성과 동작의 선언 및 정의 | 클래스에서 정의한 속성과 동작을 실제로 구현함 | | 생성 시기 | 컴파일 시 존재 | 프로그램 실행 시 생성 | | 개수 | 하나만 정의되어도 여러 개의 객체 생성 가능 | 여러 개 생성 가능 | | 예시 | `class Person { ... }` | `Person p = new Person();` | 4. 요약 - 클래스 는 객체를 만들기 위한 설계도이며, 속성과 메서드를 정의합니다.
- 객체 는 클래스 설계도를 바탕으로 생성된 실제 존재하는 인스턴스입니다.
- 즉, 클래스가 ‘붕어빵 틀’이라면, 객체는 틀을 사용해 만든 ‘붕어빵’이라고 할 수 있습니다.
이러한 차이를 명확히 이해하면, 자바에서 객체지향 프로그래밍을 체계적으로 학습하고 적용하는 데 큰 도움이 됩니다.