클래스와 객체의 차이점을 말하라고 하면 뭐라고 말할 수있을까?
먼저 '인스턴스화(Instantation) 여부'에 대해 말할 수 있다.
- 클래스는 객체를 만들기 위한 청사진이고, 객체는 그 클래스의 인스턴스이다.
- 클래스는 데이터 및 메서의 틀을 제공하며, 객체는 이러한 틀을 기반으로 실제 메모리에 할당된 것이다.
- 객체는 클래스의 인스턴스로, 클래스에서 정의된 속성과 메서드를 실제 값과 동적으로 구현한다.
- 객체는 클래스의 인스턴스이기 때문에 여러 객체를 만들어 사용할 수 있다
- 객체는 클래스의 인스턴스이지만 클래스 자체로는 직접적으로 데이터를 담거나 메서드를 실행할 수 없다
그렇다면 인스턴스화되었다는 것을 다음과 같이 정의할 수 있다.
인스턴스화
인스턴스화는 클래스로부터 객체(인스턴스)를 생성하는 과정을 의미한다.
앞서 클래스는 실제로 데이터를 가지거나 동작을 수행하는 것이아니고, 객체를 생성하기 위한 틀을 제공한다고 했다.
그래서 클래스의 인스턴스(객체)를 생성해야 클래스 내 정의된 속성과 동작을 사용할 수 있는 것이다.
인스턴스화된 객체와 인스턴스화되지 않은 클래스의 주요 차이는?
1. 메모리 할당
- 객체 : 메모리에 할당되어 실제 데이터를 포함하고, 클래스에서 정의된 동작을 수행할 수 있음
- 클래스 : 메모리에 직접적으로 할당되지 않으며, 단순히 클래스의 구조와 틀만 제공함
2. 사용 가능성
- 객체 : 해당 클래스의 속성과 메서드를 실제로 사용할 수 있음
- 클래스 : 클래스 내 정의된 메서드나 속성을 사용할 수 없음
3. 동적 특성
- 객체 : 객체는 동적으로 속성을 수정하거나 새로운 동작을 추가할 수 있음
- 클래스 : 클래스는 수정이 어려울 수 있고, 객체를 생성하기 전까지는 변경이 불가능함
+ ) 그외 클래스와 객체의 차이점
1. 설계와 실체
클래스
- 클래스는 추상적인 설계를 나타내며, 객체의 특징을 정의한다
객체
- 실제로 존재하는 것으로, 클래스의 인스턴스이다.
- 클래스를 기반으로 생성되며, 데이터를 포함하고 해당 클래스에서 정의된 작업을 수행할 수 있다.
한마디로, 클래스로 설계하면 객체는 그 설계의 실체인 것이다.
2. 메모리 할당
클래스
- 메모리에 직접적으로 할당되지 않음.
- 클래스는 프로그램의 코드 부분이며, 실행 중에 메모리에 할당되지 않음
객체
- 메모리에 할당되고, 데이터를 저장하며 해당 데이터를 가공하는데 사용됨
- 객체는 메모리를 차지하며, 실행 중에 동적으로 생성되고 삭제됨
3. 정적 vs 동적
클래스
- 보통 정적인 특성을 갖는다. 한 번 정의되면 수정이 어려울수 있다.
객체
- 객체는 생성된 후에도 속성을 변경하거나 다른 동작을 수행할 수 있는 동적인 특성을 갖는다.
4. 관계
클래스는 객체를 생성하기 위한 틀이므로, 여러 객체가 같은 클래스의 인스턴스가 될 수 있다.
'Java' 카테고리의 다른 글
Java | 자바의 메모리 구조 - Stack 영역과 Heap 영역 (2) | 2024.09.25 |
---|---|
Java | InterruptedException 이란? (0) | 2023.11.13 |
Java | Java 에서 배열을 복사하는 메서드 (0) | 2023.09.15 |
Java | 문자열 변환 - parse() / valueOf() / toString() (0) | 2023.08.22 |
Java | 논리 연산자 ( || , && ) 과 ( | , & ) 의 차이 (0) | 2023.07.31 |