반응형
프로그램 개발한다는 것은 특정 기능을 만든다는 의미이다.
그렇다면 클래스(class), 객체(object), 인스턴스(instance) 차이는 무엇일까
public class Animal { // 클래스
}
public class Main { // 객체+인스턴스
public static void main(String[] args) {
Animal bird, dog; // 객체
// 인스턴스화 (객체를 메모리에 할당)
bird = new Animal(); // bird은 Animal 클래스의 인스턴스
dog = new Animal(); // dog은 Animal 클래스의 인스턴스
}
}
Animal 클래스를 객체를 만들어 내기 위한 설계도라고 한다면
클래스에서 선언된 모양 그대로 구현할 대상을 객체(Object)라고 한다.
그리고 클래스로 객체를 만드는 것을 인스턴스화라고 한다.
만들어지고 어디선가 실행된다면 그 순간에 메모리에 올라가게 되는데 그것을 '인스턴스화' 됐다고 한다.
'클래스'에 의해 만들어진 '객체'를 '인스턴스'라고도 한다.
클래스로 찍어낸 것이 객체, 그 객체 개개인은 인스턴스인 셈이다.
Animal cat = new Animal();
다시 말해 여기서는 'cat은 객체', 'Animal의 인스턴스'라고 표현할 수 있다.
차이점 | ||
클래스(Class) | 객체(Object) | 인스턴스(Instance) |
객체를 만들어 내기 위한 설계도 | 설계도로 구현한 모든 대상 | |
클래스의 타입으로 선언되었을 때 객체라고 하며 클래스의 인스턴스라고 한다. | 그 객체가 메모리에 할당되어 실제 사용될 때 인스턴스라고 한다. | |
실체에 초점을 두기 때문에 현실 세계에 가깝다고 본다. | 관계에 초점을 두기 때문에 소프트웨어 세계에 가깝다고 본다. |
반응형
'활동 > 호기심' 카테고리의 다른 글
for문과 foreach문은 어떨 때 쓰면 좋을까 (0) | 2023.09.01 |
---|---|
아니 자바에서 static이 도대체 뭔데 (클래스와 메소드) (0) | 2023.08.29 |
자바 for문을 이용한 '공포의 별 찍기 문제' (0) | 2023.08.25 |
While문과 for문의 차이점 (+코드를 간결하게 만들어주는 람다 표현식 설명도 한 스푼) (0) | 2023.08.24 |
String.valueOf()와 Integer.toString() 차이점은 Null 값 처리 (0) | 2023.08.23 |