- 객체 : 특정 사실을 객관화하여 인식하거나 이해하는 대상
- 인스턴스 : 실행 중인 임의의 프로세스, 클래스의 현재 생성된 오브젝트
객체는 현실 세계(시스템)에서 실제 인식할 수 있는 대상을 의미한다. OOP의 관점으로 보았을 때, 객체는 현실 세계를 디지털로 표현할 대상이라고 부를 수 있다. 현실 세계에서 객체의 개수는 무한대에 가깝다고 볼 수 있다.
객체는 다음과 같은 모든 대상을 지칭한다.
객체는 아래 3요소로 구성되어 있다.
객체가 갖는 상태나 행위 역시 무한대에 가깝다. 현실 세계에서 객체는 저마다 정말 다양한 상태를 갖고, 다양한 행동을 할 수 있으니까.
객체에 대해 더 자세한 내용을 보고 싶다면, 제 블로그에 'OOP' 또는 '객체지향'이라고 검색해서 하나씩 살펴보시기 바랍니다.
인스턴스는 class를 구현하여 메모리에 할당한 것이다. class는 객체를 추상화한 것으로, domain에 따라 제한된 상태와 행위를 갖는다. 즉, 객체와 달리 인스턴스는 유한한 상태와 행위를 갖는 것이 가장 뚜렷한 차이점이다. 인스턴스에서 상태는 '필드 또는 멤버 변수', 행위는 '메소드'라고 부른다.
객체는 analog, 인스턴스는 digital라고 생각하면 그 차이를 정말 쉽게 이해할 수 있다.