📌 클래스(Class)
- 객체를 만들어 내기 위한 설계도
- 연관되어 있는 변수와 메서드들의 집합
📌 객체(Object)
- 소프트웨어 세계에 구현할 대상
- 클래스에 선언된 모양 그대로 생성된 실체
- 클래스의 인스턴스(Instance)라고도 부름
- 하지만 모든 객체가 인스턴스는 아님
📌 인스턴스(Instance)
- 설계도(클래스)를 바탕으로 소프트웨어 세계에 구현된 구체적인 실체
- 즉, 객체를 소프트웨어에 실체화하면 그것을 인스턴스라고 부름
- 실체화된 인스턴스는 메모리에 할당
- 인스턴스는 객체에 포함됨
- 차이점은 객체가 메모리에 할당되어 실제 사용될 때 그것을 인스턴스라고 함
- 인스턴스는 어떤 원본(추상적인 개념)으로부터 생성된 복제본을 의미
- 따라서 인스턴스라는 용어는 클래스와 객체 사이 관계로 한정지어 사용할 필요 없음
💡 코드로 보는 예시
public class Car {
...
}
public class Main {
public static void main(String[] args) {
Car porsche, ferrari;
porsche = new Car();
ferrari = new Car();
}
}
🚧 클래스와 객체와 인스턴스의 차이
- 클래스는 설계도, 객체는 설계도로 구현한 모든 대상을 의미
- 객체(Object)와 인스턴스(Instance)의 차이
- 클래스 타입으로 선언되었을 때 객체, 그 객체가 메모리에 할당되어 실제 사용될 때 인스턴스
- 객체는 현실 세계에 가깝고, 인스턴스는 소프트웨어 세계에 가까움
- 객체는 실체, 인스턴스는 관계에 초점