오늘이라도

[Java] 도대체 객체가 뭔데? : 객체, 클래스, 인스턴스 본문

개발 공부/Java

[Java] 도대체 객체가 뭔데? : 객체, 클래스, 인스턴스

upcake_ 2021. 6. 21. 09:48
반응형

1. 개요

 개발을 하다 보면 정말 자주 듣고 보고 말하고 쓰게 될 말이 객체입니다.

 

도대체 객체란 무엇일까요?

 

오늘 포스트에서는 객체, 클래스, 인스턴스에 대해서 제가 공부한 것을 바탕으로 아주 간단하게 적어보려고 합니다.

 

세 개념 전부 간단하게 설명할 수 있는 것은 아니지만, 자세히 적기에는 제 공부가 부족해서 ㅜㅜ

 

포스트의 내용도 저 같은 초보 개발자분들이 이해하기 쉽게 아주 기본적인 내용이 될 것 같습니다.

 

부정확하고 틀린 내용이 있을 수도 있으니 혹시나 발견하셨다면 댓글로 많은 가르침 부탁드립니다!

 

 

2. 객체란?

An object is a class instance or an array.

 제임스 고슬링이 작성한 자바 언어 설명서 (The java Language Specification)에는 객체(object)란 클래스의 인스턴스나 배열을 말한다고 정의되어 있습니다.

 

컴퓨터 공학에서 객체는 변수, 자료 구조, 함수, 메서드, 식별자에 의해 참조된 메모리 상의 값 등을 의미합니다.

 

객체지향 프로그래밍에서 객체는 변수, 함수, 자료 구조의 조합이 될 수 있는데, 특히 객체지향 프로그래밍에서 클래스를 기반으로 한 변수를 클래스의 인스턴스라고 지칭합니다.

 

 

 넓은 의미로 객체는 실세계에 존재하거나 생각할 수 있는 것을 뜻합니다.

 

우리가 개발을 하면서 접하게 될 프로그래밍에서의 객체는 속성과 기능을 가지는 프로그램 단위를 뜻합니다.

 

아이폰 프로그램이 있다고 하면 속성으로는 색상, 용량 등이 있고 기능으로는 전화 등의 기능이 있겠지요.

 

여기서 속성은 흔히 말하는 멤버 변수, 파라미터를 말하고 기능은 메서드를 의미합니다.

 

 

3. 클래스란?

객체지향 프로그래밍에서 클래스는 멤버 변수와 메서드를 가지는 객체를 만들기 위한 확장이 가능한 코드 양식입니다.

 

쉽게 말해, 객체를 찍어내기 위한 틀, 설계도라고 보시면 됩니다.

 

아이폰을 산다고 했을 때 아이폰 무슨 색상인지, 용량은 얼마로 하는지 다 제각각이겠죠

 

하지만 공통적으로 색상과 용량이라는 속성과 전화라는 기능을 가집니다.

 

이런 아이폰 객체들은 아이폰 클래스에서 생성되었다고 할 수 있습니다.

 

 

4. 인스턴스란?

 인스턴스란 설계도(클래스)를 바탕으로 실체화되어 메모리에 할당된 실체를 말합니다.

 

클래스에서 나온다는 점에서 객체와 유사하지만, 차이점을 말하자면,

 

객체는 소프트웨어 세계에 구현할 대상이고, 설계도에 따라 소프트웨어 세계에 구현된 실체가 인스턴스입니다.

 

인스턴스는 객체에 포함된다고 볼 수도 있습니다.

 

- 3줄 요약 -

1. 객체 : 소프트웨어 세계에 구현할 대상이며 속성과 기능을 가지는 프로그램 단위를 뜻합니다.

2. 클래스 : 객체에 속성과 기능을 넣어줄 설계도를 뜻합니다.

3. 인스턴스 : 클래스에 따라 메모리상에 구현된 실체를 뜻합니다.

 

※ 참고

- The Java Language Specification

https://docs.oracle.com/javase/specs/jls/se8/html/index.html

 

- 위키피디아

https://en.wikipedia.org/wiki/Object_(computer_science) 

https://en.wikipedia.org/wiki/Class_(computer_programming) 

https://en.wikipedia.org/wiki/Instance_(computer_science) 

 

- 네이버 지식백과

https://terms.naver.com/entry.naver?docId=3532992&cid=58528&categoryId=58528 

 

- 객체와 인스턴스의 차이

https://cerulean85.tistory.com/149

 

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

https://gmlwjd9405.github.io/2018/09/17/class-object-instance.html

 

반응형