클래스는 객체를 실체화하기 위한 설계도라고 보통 이야기한다. 그리고 이 설계도를 베이스로 속성과 기능들을 재조합해 다양한 객체를 생성한다.
클래스는 속성과 기능을 가진 객체를 총칭하는 개념이다. 클래스는 추상적인 것일뿐 실제하지 않는다.
사전에 객체를 검색해보면 '실세계에 존재하거나 생각할 수 있는 것'을 말한다. 쉽게 말해 사물과 같은 눈에 보이는 것뿐만 아니라, 개념이나 논리와 같이 눈에 보이지 않는 것들도 객체라고 볼 수 있다.우리가 생각하고 표현할 수 있는 모든 것이 객체라는 것이다. (치킨이 먹고싶은 지금 내 마음도 객체!)
인스턴스는 하나의 클래스로부터 만들어진 객체를 말한다. 좀 더 자세히 이야기해보자면 소프트웨어 세계에 실체화되어 메모리에 할당된 객체라고 보면 된다.
그렇게 보기에는 어렵다. 객체가 실체화 할 수 있는 모든 것이라면, 인스턴스는 소프트웨어 세계에 실체화 된 것이라고 생각하면 좋을 것 같다.
LOL의 소환사의 협곡을 소프트웨어 세계라고 생각해보자. LOL에는 다양한 챔피언이 존해한다. 그렇다면 챔피언은 객체라고 볼 수 있을까?
챔피언은 추상적인 것이기 때문에 실체화할 수 없다. 그래서 챔피언은 클래스에 가깝다고 볼 수 있다.
반면 티모는 실체화 할 수 있기 때문에 객체라고 볼 수 있다.
클래스는 new
키워드를 통해 인스턴스를 생성한다. Champion 클래스로 소환사의 협곡(소프트웨어 세계)에 실체화된 티모(인스턴스)를 생성해보자.
Champion 티모 = new Champion();
티모 인스턴스 생성 성공!