객체는 인스턴트스를 포함하는 개념이다
ㅇ객체(object)
객체는 클래스에서 정의한 속성과 기능을 가진 실체이다. 객체는 서로 독립적인 상태를 가진다.
예를 들어 위 코드에서 student1은 학생 1의 속성을 가지는 객체이고, student2는 학생 2의 속성을 가지는 객체이다. student1과 student2는 같은 클래스에서 만들어졌지만, 서로 다른 객체이다.
ㅇ인스턴스(instance)
인스턴스는 특정 클래스로부터 생성된 객체를 의미한다. 그래서 객체와 인스턴스라는 용어는 자주 혼용된다. 인스턴스는 주로 객체가 어떤 클래스에 속해 있는지 강조할 때 사용한다. 예를 들어서 "student1 객체는 Student 클래스의 인스턴스다"라고 표현한다.
[객체 vs 인스턴스]
둘 다 클래스에서 나온 실체라는 의미에서 비슷하게 사용되지만, 용어상 인스턴스는 객체보다 좀 더 관계에 초점을 맞춘 단어이다. 보통 "student1은 Student의 객체이다."라고 말하는 대신 "student1은 Student의 인스턴스이다."라고 특정 클래스와의 관계를 명확히 할 때 인스턴스라는 용어를 주로 사용한다.
좀 더 쉽게 풀어보자면, 모든 인스턴스는 객체이지만, 우리가 인스턴스라고 부르는 순간은 특정 클래스로부터 그 객체가 생성되었음을 강조하고 싶을 때이다. 예를 들어 student1은 객체이지만, 이 객체가 Student 클래스로부터 생성된다는 점을 명확히 하기 위해 student1을 Student의 인스턴스라고 부른다.
하지만 둘 다 클래스에서 나온 실체라는 핵심 의미는 같기 때문에 보통 둘을 구분하지 않고 사용한다.
참고 및 출처: 자바의 정석(남궁성), 김영한의 실전 자바 - 기본편 https://www.inflearn.com/course/%EA%B9%80%EC%98%81%ED%95%9C%EC%9D%98-%EC%8B%A4%EC%A0%84-%EC%9E%90%EB%B0%94-%EA%B8%B0%EB%B3%B8%ED%8E%B8
'소프트웨어공학 > OOP' 카테고리의 다른 글
[OOP] 메서드 체이닝(Method Chaining) (0) | 2024.08.22 |
---|---|
[OOP] 불변 객체와 메서드명 관례 - withXxx() (0) | 2024.08.20 |
[OOP] 정적 의존관계 vs 동적 의존관계 (0) | 2024.08.20 |
[OOP] OCP(개방 폐쇄 원칙)과 디자인 패턴 (0) | 2024.08.12 |
[OOP] UML 표기법 (0) | 2024.08.09 |