클래스는 객체를 생성하기 위한 ‘틀’ 또는 ‘설계도’이다. 클래스는 객체가 가져야 할 속성(변수)과 기능(메서드)를 정의한다.
예) 학생이라는 클래스는 속성으로
name
,age
,grade
를 가진다.
객체는 클래스에서 정의한 속성과 기능을 가진 실체이다. 객체는 서로 독립적인 상태를 가진다.
예)
student1
은 “학생1”의 속성을 가지는 객체이고,student2
는 “학생2”의 속성을 가지는 객체이다.
student1
과 student2
는 같은 클래스에서 만들어졌지만, 서로 다른 객체이다.
인스턴스는 특정 클래스로부터 생성된 객체를 의미한다. 그래서 객체와 인스턴스라는 용어는 자주 혼용된다.
인스턴스는 주로 객체가 어떤 클래스에 속해 있는지 강조할 때 사용한다.
예)
student1
객체는Student
클래스의 인스턴스다.
둘 다 클래스에서 나온 실체라는 의미에서 비슷하게 사용되지만, 용어상 인스턴스는 객체보다 좀 더 관계에 초점을 맞춘 단어이다. 보통 “student1
은 Student
의 객체이다.” 라고 말하는 대신 “student1
은 Student
의 인스턴스이다.” 라고 특정 클래스와의 관계를 명확히 할 때 인스턴스라는 용어를 주로 사용한다.
좀더 쉽게 풀어보자면, 모든 인스턴스는 객체이지만, 우리가 인스턴스라고 부르는 순간은 특정 클래스로부터 그 객체가 생성되었음을 강조하고 싶을 때이다. 예를 들어 student1
은 객체이지만, 이 객체가 Student
클래스로부터 생성되었다는 점을 명확히 하기 위해 student1
을 Student
의 인스턴스라고 부른다.
☑️ 둘 다 클래스에서 나온 실체라는 핵심 의미는 같기 때문에 보통 둘을 구분하지 않고 사용한다.