본문 바로가기
JAVA/기초

[JAVA] 클래스 (Class), 객체 (Object), 인스턴스 (Instance), 변수 (Variable) 개념 정리

by 뿌비 2024. 10. 12.
728x90

클래스 (Class)

  • 객체를 생성하기 위한 설계도이며 필드와 메서드로 구성되어 있다.
  • 필드(Field): 객체의 상태를 나타내는 변수들을 말한다.
  • 메서드(Method): 특정 작업을 수행하기 위한 명령문 집합을 말한다.

객체 (Object)

  • 클래스를 기반으로 만들어진 대상이며, 클래스에서 정의한 속성과 동작을 가진다.
  • 객체는 클래스의 인스턴스라고도 불리며, 선언한 객체는 아직 메모리를 차지하지 않는다.

인스턴스 (Instance)

  • 클래스를 통해 생성된 구체적인 실체이다. 
  • 인스턴스는 메모리에 할당되어 실제로 사용되는 객체를 의미한다.
  • 인스턴스는 특정 클래스의 객체를 나타내는 용어이다. 즉, 클래스로부터 생성된 각각의 객체를 인스턴스라고 부른다.
    따라서, 인스턴스는 개념적으로 객체와 같거나, 객체의 구체적인 예시로 볼 수 있다.
※ 클래스와 인스턴스의 관계
클래스를 설계도라고 한다면, 인스턴스는 그 설계도를 바탕으로 만들어진 실제 제품에 해당한다.
클래스는 여러 개의 인스턴스를 생성할 수 있는 반면, 각 인스턴스는 클래스의 정의에 따라 독립적으로 메모리를 차지하며 상태를 유지한다.
예시: Car라는 클래스가 있다면, Car 클래스의 인스턴스는 myCar1, myCar2와 같이 각기 다른 자동차 객체를 생성한 것이다. 각 인스턴스는 그 자체의 속성과 동작을 가진다.

변수 (Variable)

  • 데이터를 저장하기 위한 메모리 공간으로, 값을 담는 컨테이너이다.
  • 객체의 속성(필드)도 변수의 일종이다.
  • 변수는 특정 데이터 타입을 가지며, 값을 변경할 수 있다.

코드 

// Car class
public class Car {
    // 필드 (변수): 자동차의 속성을 나타내는 변수들
    private String color; // 자동차의 색상
    private String model; // 자동차의 모델

    // 생성자: 객체를 생성할 때 호출되는 메서드
    public Car(String color, String model) {
        this.color = color; // 매개변수로 받은 color 값을 필드에 할당
        this.model = model; // 매개변수로 받은 model 값을 필드에 할당
    }

    // 메서드: 객체의 행동을 정의하는 함수
    public void displayInfo() {
        // 자동차 정보 출력
        System.out.println("모델: " + model + ", 색상: " + color);
    }

    // 필드에 접근하기 위한 getter 메서드
    public String getColor() {
        return color; // color 필드의 값을 반환
    }

    public String getModel() {
        return model; // model 필드의 값을 반환
    }
}

// 예시: Main 클래스에서 객체를 생성하고 사용하는 예제
public class Main {
    public static void main(String[] args) {
    	// 객체 생성 3가지 방법 
   		
        /*
        * 1. 객체 선언: 클래스명 + 객체변수명
        *    객체 변수가 선언되었지만 아직 메모리는 할당되지 않음(인스턴스가 아님)
        */
        Car myCar1; 
        
        /*
        * 2. 객체 생성: 객체변수명 = new 클래스명;
        *    객체가 생성되고 메모리가 할당됨(인스턴스가 생성됨)
        */
        myCar1 = new Car("Red", "Toyota");
        
        /*
        * 3. 동시 선언 및 생성: 클래스명 + 객체변수명 = new 클래스명;
        *    객체를 선언과 동시에 생성하므로 메모리가 할당됨(인스턴스가 생성됨)
        */
        
        Car myCar2 = new Car("Blue", "Honda"); 
        Car myCar3 = new Car("Black", "BMW"); 

        // 각 자동차 정보 출력
        myCar1.displayInfo(); // 출력: 모델: Toyota, 색상: Red
        myCar2.displayInfo(); // 출력: 모델: Honda, 색상: Blue
        myCar3.displayInfo(); // 출력: 모델: BMW, 색상: Black
    }
}

구분 비유 요악
클래스 (Class) 붕어빵 틀 (설계도) 객체를 정의하는 틀, 설계도
객체 (Object) 붕어빵이 될 대상 (붕어빵 틀로 만든 것) 클래스를 기반으로 한 구체적인 대상
인스턴스 (Instance) 실제로 만든 붕어빵 설계도를 바탕으로 만들어진 메모리에 할당된 객체, 실제로 사용되는 상태
변수 (Variable) 붕어빵의 크기나 맛을 나타내는 성분 데이터를 저장하는 공간, 객체의 속성도 포함

 

728x90