✔️ 클래스 & 객체 & 인스턴스
클래스란?
- 객체를 만들어 내기 위한 설계도 혹은 틀
- 연관되어 있는 변수와 메소드의 집합
객체란?
- 소프트웨어 세계에 구현할 대상
- 클래스에 선언된 모양 그대로 생성된 실체
- 클래스의 인스턴스라고도 불림
- 객체는 모든 인스턴스를 대표하는 포괄적인 의미를 가짐
- 객체 지향 프로그래밍의 관점에서 클래스의 타입으로 선언되었을 때 객체라고 부름
인스턴스란?
- 설계도를 바탕으로 소프트웨어 세계에 구현된 구체적인 실체
- 즉, 객체를 소프트웨어에 실체화하면 인스턴스라고 부를 수 있게 되므로 인스턴스는 객체에 포함된다고 볼 수 있음
- 실체화된 인스턴스는 메모리에 할당됨
- 객체 지향 프로그래밍의 관점에서 객체가 메모리에 할당되어 실제 사용될 때 인스턴스라고 부름
- 추상적인 개념과 구체적인 객체 사이에서 관계에 초점을 맞출 경우에 사용하게 되며
객체 간의 링크는 클래스 간의 연관 관계의 인스턴스라고 할 수 있고 실행 프로세스는 프로그램의 인스턴스임
그러므로 인스턴스라는 용어는 반드시 클래스와 객체 사이의 관계로 한정지어서 사용할 필요는 없음
// 클래스
public class Animal {
...
}
public class Main {
public static void main(String[] args) {
// 객체
Animal cat, dog;
// cat은 Animal 클래스의 인스턴스 (객체를 메모리에 할당해 인스턴스화)
cat = new Animal();
// dog은 Animal 클래스의 인스턴스 (객체를 메모리에 할당해 인스턴스화)
dog = new Animal();
}
}