Backend/Java

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

퐁고 2023. 2. 19. 15:15
반응형

객체, 클래스, 인스턴스는 정말 중요합니다 하지만 많이들 헷갈리시는데요. 그래서 최대한 쉽게 정리해봤어요!

 

객체(Object)란?
객체(Object)란 물리적으로 존재하거나 추상적으로 생각할 수 있는 것 중에서 자신의 속성을 가지고 있고 다른 것과 식별 가능한 것을 말합니다.

예를 들어 물리적(유형)으로 존재하는 자동차, 컴퓨터, 사람과 추상적(무형)으로 존재하는 강의, 주문 등이 모두 객체가 될 수 있습니다. 

 

사람이라는 객체가 있다고 하면 성별, 이름, 나이 등 속성이 존재하고 밥을 먹다, 걷다, 잔다 라는 동작을 가지고 있습니다.

자바에서는 이러한 속성들을 필드(Field), 동작들을 메소드(Method)라고 부릅니다.

 

클래스(Class)란?
클래스(Class)란 Java 프로그램에서 객체를 생성하기 위한 일종의 설계도입니다. 객체가 가지는 속성(필드)과 동작(메소드)으로 이루어져 있어요.

흔히 붕어빵(객체)을 만들기 위한 붕어빵 틀(클래스)이라고 비유를 합니다. 클래스는 필드(Field), 생성자(Constructor), 메소드(Method)로 구성되어 있습니다. 이들은 생략될 수도 있고 하나 이상 작성될 수도 있습니다.

 

필드
: 객체의 데이터가 저장되는 곳

생성자

: 객체가 실제로 생성될 때 초기화 역할을 담당, new 연산자

메소드
: 객체의 동작에 해당하는 실행 블록

 

인스턴스(Instance)란?
클래스가 붕어빵 틀이라면 그 틀을 통해 생성된 객체(붕어빵) 하나하나를 해당 클래스의 인스턴스(Instance)라고 부릅니다.

Java 프로그램 실행 시 클래스는 JVM 메모리의 클래스 영역(Class Area)에 로드되고 이 클래스를 사용하여 힙 영역(Heap Area)에 새로운 인스턴스(객체)를 생성할 수 있습니다. 즉, 인스턴스란 현실의 객체를 소프트웨어 내에서 구현한 실체라고 볼 수 있습니다. 이렇게 생성된 인스턴스들은 각자 고유의 특성을 가지고 독립적으로 존재합니다.

제가 생각했을 때 인스턴스란, 다른 class에 있는 필드와 메소드들을 main 메소드에서 사용하기 위해 new 연산자를 이용하여, 인스턴스화를 해준 후 main 메소드에서 사용하는 것을 인스턴스라 하는 것 같습니다.(class의 복제본이라 생각하면 쉽습니다.)

 

클래스로부터 객체를 만드는 과정 (인스턴스화), 동일한 클래스로 여러 개의 인스턴스를 만들 수 있습니다.

클래스명 참조변수명 = new 클래스명();

 

new 연산자란?

  • 클래스 타입의 인스턴스를 생성해주는 역할을 담당합니다.
  • 메모리(Heap) 영역에 데이터를 저장할 공간을 할당받고 그 공간의 참조값을 객체에게 반환하여주고 이어 생성자를 호출하게 됩니다.
  • 인스턴스를 핸들하기 위해서는 new 연산자를 통해 참조값을 저장한 객체로만 접근 가능합니다.

 

💡 정리

◾ 객체(Object)란 자신 고유의 속성을 가지는 물리적, 추상적인 모든 대상을 말합니다.

◾ 클래스(Class)란 객체들을 소프트웨어 내에서 구현하기 위해 만든 설계도이며 이를 통해 생성된 객체 하나하나를 클래스의 인스턴스(Instance)라 부릅니다. 대체로 객체와 인스턴스는 혼용해서 표현하기도 합니다.