Java - Classes, Objects and Instances

  • 우리가 클래스, 객체, 인스턴스라고 부르는데 어떤 차이가 있을까?

1. 클래스 (Class)

  • 자바에서 가장 작은 단위이며, 상태(필드)와 동작(메서드)으로 구분된다.
  • 객체를 생성하기 위한 설계도이며 틀이다. 붕어빵을 예시로 들면 붕어빵을 굽기 위한 틀이라고 보면 된다.
  • 런타임 시 JVM의 클래스 영역 메모리에 바로 로딩된다.
  • 사람과, 아이유를 예시로 들면 사람이 클래스이다. 사람의 키를 161이라고 말하지는 않는다.



2. 객체 (Object)

  • 클래스를 기반으로 생성되며, 추상적인 개념이다.
  • 인스턴스와 혼용되어 사용되기도 하지만, 명확하게 분류하자면 JVM의 Heap 메모리에 아직 할당되지 않은 상태를 객체라고 이야기한다.
  • 붕어빵을 예시로 들면, 틀로 구워낸 붕어빵 그 자체를 객체라고 한다.



3. 인스턴스 (Instances)

  • 클래스를 기반으로 생성되어 Heap 메모리에 할당된 상태를 인스턴스라고 한다.
      Car c1 = new Car();
      Car c2 = new Car();
    
  • 이렇게 생성되었다고 치면, Car 클래스에 대한 c1, c2라는 인스턴스가 생성되었다고 말한다.
  • 이러면 c1, c2라는 인스턴스의 참조주소는 Stack 메모리에 생성되고, 해당 인스턴스의 값들은 Heap 메모리에 생성된다.
  • 붕어빵을 예시로 들면, 틀로 구워낸 붕어빵 하나하나를 인스턴스라고 부른다.
  • 사람과, 아이유를 예시로 들면 아이유가 인스턴스이다. 사람의 키를 160이라고는 안하지만 아이유의 키를 161이라고는 할 수 있다.






results matching ""

    No results matching ""