JAVA/JAVACORE

[COMPARISON] Object / Class

기록해연 2024. 10. 3. 18:10

Technical Interview 에서 받았던 질문 中 1

Object와 Class 를 비교해 설명해주세요.


1. 정의

  • Class (클래스): 클래스는 객체의 설계도 또는 템플릿이다. 클래스는 객체가 가질 속성(data)행동(method)을 정의한다. 즉, 객체가 어떻게 생기고 어떤 동작을 할 수 있는지를 규정하는 청사진이다. 예를 들어, "Car" 클래스는 모든 자동차가 가져야 할 공통 속성(예: 색상, 모델)과 행동(예: 가속, 정지)을 정의한다.
  • Object (객체): 객체는 클래스의 인스턴스이다. 클래스라는 설계도를 바탕으로 만들어진 실제 사용 가능한 실체다. 객체는 클래스에서 정의된 속성과 행동을 실제 값으로 채운 존재로, 예를 들어, "Car" 클래스에서 만든 "myCar" 객체는 빨간색이고 현대 자동차 모델을 가지는 실제 자동차이다.

2. 메모리 상의 차이

  • Class (클래스): 클래스는 메모리에 올라가지 않는 추상적인 개념으로, 실제로 존재하는 것이 아니라, 객체를 만들기 위한 설계도일 뿐이다. 즉, 클래스 자체는 메모리를 할당하지 않는다.
  • Object (객체): 객체는 메모리 상에 존재하는 실제 데이터이다. 클래스를 통해 만들어진 객체는 메모리에 공간을 할당받아 상태(필드)와 행동(메서드)에 대한 값을 가진다.

3. 관계

  • Class (클래스): 클래스는 여러 개의 객체를 만들 수 있다. 클래스는 한 번 정의되면, 이를 바탕으로 여러 객체를 생성할 수 있다. 예를 들어, "Car" 클래스로 다양한 색상과 모델을 가진 여러 자동차 객체를 만들 수 있다.
  • Object (객체): 객체는 클래스에서 파생된 구체적인 실체이다. 예를 들어, myCar라는 객체와 yourCar라는 객체는 둘 다 "Car" 클래스에서 만들어졌지만, 서로 다른 속성(예: 색상, 속도)을 가질 수 있다.

4. 예시

// Class: Car는 자동차의 속성(색상, 속도)과 행동(가속)을 정의한 클래스.
class Car {
   // state(상태)
    String color; 
    int speed;
    
    // behavior(행동)
    void accelerate() {
        speed += 10;
    }
}

// 객체 생성
// Object: myCar는 Car 클래스로부터 생성된 실제 객체이며, 
// 색상이 "Red"이고 속도가 설정된 특정 자동차.
Car myCar = new Car(); // 객체 myCar 생성
myCar.color = "Red";   // state 설정
myCar.accelerate();    // behavior 실행

Car yourCar = new Car(); // 객체 yourCar 생성
yourCar.color = "Yellow";// state 설정
yourCar.accelerate();    // behavior 실행

5. 요약 비교표

항목 Class Object
정의 객체를 위한 설계도나 템플릿 클래스의 인스턴스, 실제 존재하는 실체
메모리 사용 메모리에 올라가지 않음 메모리에 올라가며 속성 값이 저장됨
역할 객체를 만들기 위한 청사진 클래스를 기반으로 생성된 구체적 존재
생성 개수 여러 개의 객체를 만들 수 있음 하나의 클래스에서 여러 개의 객체가 생성됨
예시 Car (자동차를 정의한 클래스) myCar (실제 빨간색 자동차 객체), yourCar (실제 노란색 자동차 객체)

최종 정리

  • 클래스는 객체를 만들기 위한 설계도이고, 객체는 그 클래스로부터 만들어진 실체다. 클래스는 속성과 메서드를 정의하고, 객체는 그 클래스를 기반으로 속성을 채워서 실제로 동작하게 되는 존재이다.

'JAVA > JAVACORE' 카테고리의 다른 글

[TOOL] Debugging on Eclipse  (1) 2024.10.20
[OVERVIEW] OOP  (0) 2024.10.16
[COMPARISON] State / Behavior in Object  (2) 2024.10.03