클래스, 객체, 인스턴스의 차이

면접용 답변

클래스는 자바에서 객체를 생성하기 위한 설계도입니다. 클래스는 객체가 가지는 속성과 동작으로 구성되며, Java가 실행될 때 클래스는 JVM 메모리 클래스 영역에 로드됩니다. 객체는 ‘클래스에 선언된 모양 그대로 생성된 실체’입니다. 클래스의 인스턴스라고 부르기도 합니다. 마지막으로 인스턴스는 설계도를 바탕으로 소프트웨어 세계에 구현된 구체적인 실체입니다. 인스턴스는 객체에 포함되는 개념으로, 추상적인 개념과 구체적인 객체 사이 관계에 초점을 맞출 경우 사용합니다.

개념 설명

Image

클래스

  • 개념

    • 객체를 만들어 내기 위한 설계도 혹은 틀

    • 객체가 가지는 속성(필드)과 동작(메서드)으로 이루어져있음

    • Java를 실행 시 클래스는 JVM 메모리의 클래스 영역(Class Area)에 로드됨

  • 자바에서는 class 클래스명 { ... } 의 형식으로 만듦

객체

  • 개념

    • 소프트웨어 세계에서 구현할 대상

    • 현실세계를 모방해서 만드는 것이 아닌 현실세계를 바탕으로 새로운 세계를 창조하는 것이 객체지향의 목표

    • 클래스에 선언된 모양 그대로 생성된 실체

  • ‘클래스의 인스턴스’라고도 부름

  • oop의 관점에서 클래스의 타입으로 선언되는 것

인스턴스

  • 개념

    • 설계도를 바탕으로 소프트웨어 세계에 구현된 구체적인 실체

    • 객체를 소프트웨어에 실체화한 것

  • 자바에서는 클래스를 new 연산자를 통해 Heap 영역에 생성하여 메모리를 할당하면됨

  • 인스턴스는 객체에 포함됨

  • 추상적인 개념(또는 명세)과 구체적인 객체 사이의 관계에 초점을 맞출 경우에 사용

추가 질문

클래스는 메모리 어디에 저장되나요?

  • 자바 프로그램이 실행되면 클래스는 JVM의 메소드 영역(또는 클래스 영역)에 로드됨

객체와 인스턴스는 어떤 차이가 있는건가요?

  • 객체와 인스턴스는 거의 같은 의미지만 관점에 따라 달리 사용됨

    • 객체: 일반적으로 클래스에서 생성된 실체

    • 인스턴스: 어떤 클래스에 속한 구체적인 객체임을 강조할 때 사용

클래스 없이 객체나 인스턴스를 만들 수 있나요?

  • 자바에서는 클래스 없이 객체와 인스턴스를 만들 수 없음

    • 객체와 인스턴스는 반드시 클래스라는 설계도를 기반으로 만들어야함

  • 자바스크립트는 프로토타입 기반 객체지향 언어이기 때문에 클래스 없이 객체를 만드는게 가능

Last updated