안녕하세요.
오늘은 자바에서 객체와 인스턴스의 개념에 대해 헷갈리는 부분을 해소하기 위해
두 개념에 대해 자세히 알아보도록 하겠습니다.
클래스, 객체, 인스턴스의 개념 알기
자바에서 클래스와 객체, 인스턴스는 객체 지향 프로그래밍의 핵심 개념으로
서로 연관되어 있지만, 각각 다른 의미를 가지고 있습니다.
클래스(Class)
- 개념
- 객체를 생성하기 위한 설계도(틀) 이다.
- 객체의 속성(attribute)과 동작(behavior)을 정의하는 멤버변수와 메서드들의 집합이다.
- 특징
- 멤버변수는 객체의 상태를 나타내고, 메서드는 객체가 수행할 수 있는 동작을 정의한다.
- 클래스는 객체를 생성하기 위한 틀로 사용되며, 하나의 클래스로 여러 개의 객체를 생성할 수 있다.
객체(Object)
- 개념
- 클래스에 선언된 모양 그대로 생성된 실체이다.
- 소프트웨어에서 구현할 대상을 말한다.
- 특징
- 클래스의 인스턴스 라고도 부른다.
- 모든 인스턴스를 대표하는 포괄적인 의미를 갖는다.
- 객체 지향 프로그래밍의 관점에서 클래스의 타입으로 선언되었을 때 객체라고 부른다.
인스턴스(Instance)
- 개념
- 클래스를 바탕으로 소프트웨어에 구현된 구체적인 실체이다.
- 객체를 소프트웨어에 실체화한 것이 인스턴스이다.
- 특징
- 실체화된 인스턴스는 메모리에 할당된다.
- 객체 지향 프로그래밍의 관점에서 객체가 메모리에 할당되어 실제로 사용될 때 인스턴스라고 부른다.
- 추상적 개념 및 구체적 객체 사이의 관계를 나타낼 때 사용한다.
- 객체는 클래스의 인스턴스이다.
- 객체 간 링크는 클래스 간 연관 관계 인스턴스이다.
- 인스턴스라는 용어는 반드시 클래스와 객체 사이의 관계로 한정지어 사용할 필요 없다.
- 인스턴스는 어떠한 개념으로부터 나온 복제본이라고 생각하면 된다.
객체, 인스턴스의 차이는 ?
결론부터 말하자면 객체가 인스턴스를 포괄하는 개념이라고 보면 될 것 같습니다.
클래스의 타입으로 선언되었을 때는 객체라고 부르고,
해당 객체가 메모리에 할당되어 실제로 사용될 때에는 인스턴스라고 부릅니다.
객체는 실체 라는 것에 초점을 맞추고, 인스턴스는 관계 라는 것에 초점을 맞춘다고 볼 수 있습니다.
이상으로 객체와 인스턴스의 개념에 대해 알아보았습니다.
헷갈리는 개념이지만, 한번 이해한다면 둘의 미묘한 차이를 구분해낼 수 있을 것 입니다.
'Java' 카테고리의 다른 글
[ JAVA ] 11. 추상 클래스(Abstract Class)와 인터페이스(Interface)에 대해 알아보자. (0) | 2023.07.15 |
---|---|
[ JAVA ] 10. 추상화(Abstraction)란 무엇인가? (0) | 2023.07.15 |
[ JAVA ] 08. 객체(Object)란 무엇인가? (0) | 2023.07.08 |
[ JAVA ] 07. 자료형을 사용할 때 고려해야 할 부분은 무엇이 있을까? (0) | 2023.07.07 |
[ JAVA ] 06. 자료형에 대해 알아보자. (0) | 2023.07.06 |