자바는 객체지향(Object-Oriented) 언어입니다. 객체지향 프로그래밍은 관련된 상태(변수)와 행동(메서드)을 하나의 덩어리로 묶어서 관리하는 패러다임입니다.
클래스(Class)는 객체를 만들기 위한 '설계도'입니다. 이 설계도를 이용해 메모리(Heap)에 실제로 만들어낸 실체를 인스턴스(Instance) 혹은 '객체'라고 부릅니다. 설계도는 하나지만, 상태가 서로 다른 인스턴스를 메모리가 허락하는 한 무한히 만들어낼 수 있습니다.
클래스(Class)는 쇠로 만들어진 '붕어빵 틀'입니다. 틀 자체는 먹을 수 없으며, 어떤 모양의 붕어빵이 나올지 형태만 정의되어 있습니다.
인스턴스(Instance)는 그 틀에 밀가루와 앙금을 넣어 구워낸 '실제 붕어빵'입니다. 팥을 넣으면 팥 붕어빵, 슈크림을 넣으면 슈크림 붕어빵이 되듯 각 인스턴스는 자신만의 독립적인 상태를 가집니다.
| 용어 | 설명 | 비유 |
|---|---|---|
| 클래스 (Class) | 객체를 만들어 내기 위한 설계도나 틀 | 붕어빵 틀 |
| 객체 (Object) | 클래스로 구현될 모든 실체의 포괄적인 이름 (개념적) | 붕어빵 그 자체 |
| 인스턴스 (Instance) | 클래스를 통해 메모리(Heap)에 실제로 구현된 특정 실체 (기술적) | 내가 방금 산 '팥 붕어빵' |