먼저 클래스란 메소드와 변수를 담아놓은 집합인데
이걸로는 아무것도 할 수가 없다
클래스를 설계도(Blueprint)라고도 하는데
클래스를 객체화(인스턴스화) 해야 명명한 클래스 타입의 값(위 스샷에서는 ot)로 사용을 할 수 있다
다음으로 객체와 인스턴스는 매우 유사하기 때문에 구분을 하는 것이 큰 의미가 없는데
다만 그래도 구분을 해 보자면 클래스를 특정 이름으로 선언만 했을때는 객체라고 하고
그 객체 안에 값을 넣어줬을 때를 인스턴스라고 한다
구분을 지을 수 있긴 하지만
Stack overflow를 뒤져보고 구글링을 해 본 결과
객체와 인스턴스는 동일하다고 봐도 되며
객체라고 말하는 사람이나 인스턴스라고 말하는 사람이나
동일한 의미로 사용하고 있으므로
객체라고 말하면 나도 따라서 객체라고 맞춰주고
인스턴스라고 말하면 나도 따라서 인스턴스라고 맞춰주라는 것이 학계의 정설이다
마지막으로 클래스, 객체, 인스턴스를 간단히 정리해보자면
클래스(class) - 메소드와 변수를 클래스 이름 안에 담아놓은 집합
객체(object) - 클래스 특정 이름으로 선언했을 때
인스턴스(instance) - 객체에 값을 할당해 줬을 경우, 이 상태까지 오면 객체화(인스턴스화)라고 한다
여기서 객체와 인스턴스는 동일한 의미로 사용해주면 된다
사용한 코드는 아래와 같다
public class ObjectTest { // 클래스
public static void main(String[] args) {
ObjectTest ot; // 객체
ot = new ObjectTest(); // 인스턴스
}
}