본문 바로가기
개발 관련/java

클래스 vs 인스턴스

by lazysnack 2022. 7. 14.

클래스 vs 인스턴스

정말 흔하게 쓰는 단어이고, 사용도 할 줄 알지만 항상 그렇듯, 남에게 제대로 설명하지 못하면 결국은 도루묵이기에.. 이번 기회에 간단하게나마 정리해보고자 한다.

1. 클래스

클래스는 데이터와 로직을 묶어서 누구나 동일한 기능을 사용할 수 있게 하고, 누구나 필요한 자기만의 데이터를 보관하기 위해서 스펙을 결정해둔 것을 의미. 예를 들어 MP3 라면 곡 데이터는 전부 다르지만, 음악 감상 기능은 모든 MP3 가 동일한 기능이 지원되는 것

여기서 데이터는 변수, 로직은 메소드가 되겠다.

클래스는 연관되어 있는 변수와 메소드의 집합이다.

2. 인스턴스

클래스라는 일종의 설계도를 통해 제품을 만드는데, 이 제품을 인스턴스라고 한다.

예를 들면 MP3 myMp3 = new MP3(); 에서 myMp3 가 인스턴스가 된다.

번외. 객체

클래스와 인스턴스는 설계도와 제품이라고 볼 수 있는데, 그러면 객체는 클래스일까 인스턴스일까?

이 글을 쓰면서 두 군데를 참고하면서 쓰고 있는데, 내용이 비슷하면서도 다르다고 할까? (포함관계적인 의미에서?)

우선 열혈강의 책에서는 "객체지향 프로그래밍에서 인스턴스라는 말과 객체라는 용어는 같은 의미로, 어떤 틀의 역할을 하는 클래스에서 나온 복사본의 존재를 의미합니다."

이고, 생활 코딩에서는 "일반적으로 설계도인 클래스가 구체적인 실체인 인스턴스가 되었을 때 객체라고 부른다. 보통은 구체적인 코드 상에서 나타나는 객체를 인스턴스라 부르고, 로직을 설계할 때 나타나는 인스턴스를 객체라고 부른다. 또는 클래스, 인스턴스의 구분 없이 포괄적으로 객체라는 말을 쓰기도 한다."


단어를 사용함에있어 따로 의식은 하지 않았지만, 인스턴스라는 용어는 잘 사용을 안했고, 주로 클래스, 객체 이렇게 사용을 했었네요.

번외2. 변수

변수는 상태라고도 표현합니다.

상태라고 배웠기도 했습니다. 하지만, '속성' 이라는 말을 더 많이 썼기에 속성이 익숙했고, 현업을 하면서 "**는 상태를 가지고 있어서 관리하기 힘들어" 라는 말을 들었을 때 상태가 대체 뭐지? 하면서 엄청 헤맸던 기억이 있네요. 그래서 이 기회에 한 번 더 써봤습니다.



'개발 관련 > java' 카테고리의 다른 글

Immutable Object란?  (0) 2022.07.14
HashTable vs HashMap  (0) 2022.07.14
자바 비동기 (2)  (0) 2022.07.14
자바 비동기 (1)  (0) 2022.07.14
캡슐화(encapsulation)  (0) 2022.07.14