클래스, 객체, 인스턴스 정리.
클래스 - Class
- 클래스는 객체를 생성하기 위한 “틀” 또는 “설계도” 입니다.
- 클래스는 객체가 가져야 할 “속성(변수)” 와 “기능(메서드)” 를 정의합니다.
- 예를 들어 학생이라는 클래스는 속성(변수)으로
name
,age
,grade
를 가집니다.
- 예를 들어 학생이라는 클래스는 속성(변수)으로
참고로 기능(메서드)은 추후에 설명합니다. 지금은 속성(변수)에 집중합시다.
-
“틀” : 붕어빵 틀을 생각해봅시다.
- 붕어빵 틀은 붕어빵이 아닙니다! 이렇게 생긴 붕어빵이 나왔으면 좋겠다고 만드는 틀일 뿐입니다.
- 실제 먹을 수 있는 것이 아닙니다. 실제 먹을 수 있는 팥 붕어빵을 객체 또는 인스턴스라고 합니다.
- 붕어빵 틀은 붕어빵이 아닙니다! 이렇게 생긴 붕어빵이 나왔으면 좋겠다고 만드는 틀일 뿐입니다.
-
“설계도” : 자동차 설계도를 생각해봅시다.
- 자동차 설계도는 자동차가 아닙니다! 설계도는 실제 존재하는 것이 아니라 개념으로만 있는 것입니다.
- 설계도를 통한 생산한 실제 존재하는 흰색 테슬라 모델 Y 자동차를 객체 또는 인스턴스라고 합니다.
- 자동차 설계도는 자동차가 아닙니다! 설계도는 실제 존재하는 것이 아니라 개념으로만 있는 것입니다.
객체 - Object
- 객체는 클래스에서 정의한 속성과 기능을 가진 실체입니다.
- 객체는 서로 독립적인 상태를 가집니다.
- 예를 들어 위 코드에서
student1
은 학생1의 속성을 가지는 객체이고,student2
는 학생2의 속성을 가지는 객체입니다.-
student1
과student2
는 같은 클래스에서 만들어졌지만, 서로 다른 객체입니다.
-
- 예를 들어 위 코드에서
인스턴스 - Instance
- 인스턴스는 특정 클래스로부터 생성된 객체를 의미합니다.
- 그래서 객체와 인스턴스라는 용어는 자주 혼용됩니다.
- 인스턴스는 주로 객체가 어떤 클래스에 속해 있는지 강조할 때 사용합니다.
- 예를 들어서 “
student1
객체는Student
클래스의 인스턴스다.” 라고 표현합니다.
- 예를 들어서 “
객체 vs 인스턴스
- 둘 다 클래스에서 나온 실체라는 의미에서 비슷하게 사용되지만, 용어상 인스턴스는 “객체보다 좀 더 관계에 초점을 맞춘 단어입니다.”
- 보통 “
student1
은Student
의 객체이다.” 라고 말하는 대신 “student1
은Student
의 인스턴스이다.” 라고 특정 클래스와의 “관계를 명확히 할 때 인스턴스” 라는 용어를 주로 사용합니다. - 좀 더 쉽게 풀어보자면, 모든 인스턴스는 객체이지만, 우리가 “인스턴스” 라고 부르는 순간 “특정 클래스로부터 그 객체가 생성되었음을 강조하고 싶을 때입니다.”
- 예를 들어,
student1
은 객체이지만, 이 객체가Student
클래스로부터 생성된다는 점을 명확히 하기 위해student1
을Student
의 인스턴스라고 부릅니다.
- 예를 들어,
하지만 둘 다 클래스에서 나온 실체라는 핵심 의미는 같기 때문에 보통 둘을 구분하지 않고 사용합니다.