Java - LOL로 알아보는 클래스와 객체

Happy Bean·2022년 10월 4일
0

나 자바봐라

목록 보기
1/1
post-thumbnail

클래스(Class)

클래스는 객체를 실체화하기 위한 설계도라고 보통 이야기한다. 그리고 이 설계도를 베이스로 속성과 기능들을 재조합해 다양한 객체를 생성한다.
클래스는 속성과 기능을 가진 객체를 총칭하는 개념이다. 클래스는 추상적인 것일뿐 실제하지 않는다.

객체(Object)

사전에 객체를 검색해보면 '실세계에 존재하거나 생각할 수 있는 것'을 말한다. 쉽게 말해 사물과 같은 눈에 보이는 것뿐만 아니라, 개념이나 논리와 같이 눈에 보이지 않는 것들도 객체라고 볼 수 있다.우리가 생각하고 표현할 수 있는 모든 것이 객체라는 것이다. (치킨이 먹고싶은 지금 내 마음도 객체!)

인스턴스(Instance)

인스턴스는 하나의 클래스로부터 만들어진 객체를 말한다. 좀 더 자세히 이야기해보자면 소프트웨어 세계에 실체화되어 메모리에 할당된 객체라고 보면 된다.

그럼 객체와 인스턴스는 같은걸까?

그렇게 보기에는 어렵다. 객체가 실체화 할 수 있는 모든 것이라면, 인스턴스는 소프트웨어 세계에 실체화 된 것이라고 생각하면 좋을 것 같다.

LOL 챔피언은 객체일까?


LOL의 소환사의 협곡을 소프트웨어 세계라고 생각해보자. LOL에는 다양한 챔피언이 존해한다. 그렇다면 챔피언은 객체라고 볼 수 있을까?
챔피언은 추상적인 것이기 때문에 실체화할 수 없다. 그래서 챔피언은 클래스에 가깝다고 볼 수 있다.

반면 티모는 실체화 할 수 있기 때문에 객체라고 볼 수 있다.

클래스는 new 키워드를 통해 인스턴스를 생성한다. Champion 클래스로 소환사의 협곡(소프트웨어 세계)에 실체화된 티모(인스턴스)를 생성해보자.

Champion 티모 = new Champion();


티모 인스턴스 생성 성공!

정리

  • 클래스 : 객체를 정의하고 만들어내기 위한 설계도. 클래스는 추상적일뿐 실제하지 않는다.
  • 객체 : 실체화할 수 있는 것. 모든 인스턴스를 포함한 포괄적인 의미
  • 인스턴스 : 클래스로부터 소프트웨어 세계에 실체화된 객체. 메모리에 할당된다.
profile
혼자 가면 빨리 가지만, 함께 가면 멀리 간다.

0개의 댓글