본문 바로가기
Develop/Java

클래스(Class)와 객체(Object)란?

by jaeyoungb 2022. 9. 5.

객체란 우리가 보고 느끼고 생각할 수 있는 모든 것이며, 사용할 수 있는 실체를 말한다.

 

클래스는 객체를 생성하는 데 사용되는 하나의 틀이다.

 

 

클래스는 객체를 정의한 '설계도' 또는 '틀'이라고 볼 수 있고, 객체를 생성하는 데 사용된다.

 

객체는 클래스에 정의되고 설계된 내용 그대로 생성된다.

둘은 뗄 수 없는 관계이다.

 

 

클래스를 통해 생성된 객체를 인스턴스(instance)라고 부르고,

 

클래스로부터 객체를 만드는 과정을 인스턴스화(instanctiate)라고 부른다.

객체와 인스턴스는 같은 말이다.
둘을 혼용하여 사용할 수 있다.
다만, 객체는 모든 인스턴스를 포함하는 넓은 의미라면, 인스턴스는 어떤 클래스로부터 생성된 것인지를 강조한다.

 

 

클래스는 크게 다음 3가지의 구성요소를 가진다.

  • 필드 : 클래스의 속성을 나타내는 변수
  • 메서드 : 클래스의 기능을 나타내는 함수
  • 생성자 : 클래스의 객체를 생성하는 역할
  • 이너 클래스 : 클래스 내부에 있는 클래스
생성자를 제외한 나머지 3가지 요소를 멤버라고 부른다.

 

 

클래스의 기본 문법은 다음 예시와 같다.

클래스의 형태 예시

 

 

객체는 크게 속성과 기능으로 구분할 수 있다.

속성은 필드(변수)로 나타내고,
기능은 메서드로 정의한다.
하나의 객체는 다양한 속성과 기능의 집합으로 이루어진다.

 

 

객체는 new 키워드를 통해 생성할 수 있다.

메서드를 사용해서도 객체를 생성할 수 있다.
클래스명 참조변수명 = new 생성자();

여기서, new 키워드는 '생성한 객체를 힙 메모리에 넣어라'라는 의미를 가진다.

 

객체(인스턴스) 생성 예시

여기서, 참조변수 bmw, audi, bentley는 실제 데이터 값을 저장하는 게 아니라,
실제 데이터가 위치한 힙 메모리의 주소값을 저장한다.

 

객체(인스턴스)를 생성하면 다음과 같이 메모리 영역에 저장된다.

객체(인스턴스) 생성 시 메모리 할당 영역

(출처 : https://velog.io/@woo00oo/%EB%B3%80%EC%88%98%EC%9D%98-%EC%A2%85%EB%A5%98%EC%99%80-%EB%A9%94%EB%AA%A8%EB%A6%AC-%EA%B5%AC%EC%A1%B0)

 

생성된 인스턴스는 힙 메모리 영역에 들어간다.
생성된 인스턴스에서 필드값은 실제 저장 공간이 객체 내부에 있다.
메서드는 힙 메모리 영역이 아닌 클래스 영역에 하나만 저장해놓고 공유하는 시스템이다.

 

 

만들어진 객체는 포인트 연산자(.)를 이용해서 활용할 수 있다.

bmw.필드명                       // 필드값 불러오기
bmw.메서드명()                 // 메서드 호출

 

 

내용에 대해 더 깊게 알게 되면, 내용을 더 추가할 예정입니다.

피드백 환영합니다!