HeadCopter

Class와 객체(Object) 개념 본문

Java

Class와 객체(Object) 개념

JungMonkey 2022. 7. 27. 12:45

객체(Object)

- 객체의 사전적 의미는 "의사나 행위가 미치는 대상" 으로 , 클래스에서 정의한 것을 토대로 메모리에 할당된 것이다

- 프로그램에서 사용되는 데이터 또는 식별자에 의해 참조되는 공간을 의미하며, 변수, 자료구조, 함수, 메서드가 될 수 있다. 하지만 메모리가 할당되기 전까지 객체는 존재하지 않는다. 

 객체 지향 프로그래밍에서 객체는 클래스의 인스턴스이다.

 

- Student 라는 객체 타입을 쓰고 student라는 레퍼런스 변수를 정하고 new 를 통해 클래스 객체를 생성한다.

- 객체는 속성과 기능을 가지게 되는데 속성은 멤버 변수, 파라미터를 뜻하고 기능은 메서드를 의미한다.

 

Class 

- 객체(Object)에 대한 속성과 기능을 코드로 구현한것을 우리는 Class라 부른다.

- 객체를 정의하고 만들어내기 위한 설계도를 Class라 생각하면 된다.

- Class는 객체의 상태를 나타내는 필드(field)와 객체의 행동을 나타내는 메서드(method)로 구성되어 있다.

 여기서 말하는 필드(field)는 클래스에 포함된 변수(variable)를 의미하고 , 메서드(method)는 어떤 특정 작업을 수행하기 위한 명령문의 집합이라 한다.

 

Class & 인스턴스(instance)

- 자바에서 클래스를 사용하기 위해서는 해당 클래스 타입의 객체를 선언해야 한다. ( 위 그림 참조)

- 클래스로부터 이렇게 객체를 선언하는 과정을 클래스의 인스턴스 화 라고 한다.

- 인스턴스란 메모리에 할당된 객체를 의미한다.

- 하나의 클래스 코드로 부터 여러개의 인스턴스를 생성하는데 그 인스턴스는 힙(heap)메모리에 생성된다.

 각각 독립적인 힙(heap)영역에 생성된 인스턴스들의 주소값이 저장된다. 

- 힙(Heap)메모리는 new라는 키워드에 의해서 생성된다. 그래서 생성된 클래스 객체의 정보가 힙(Heap) 메모리 공간에 

인스턴스로 생성되고 스택(stack)메모리에 저장되어 있는 참조 변수는 힙(Heap)메모리 주소를 가리키게 된다.

(스택에 생성된 참조 변수는 생성된 Heap 메모리의 위치를 알고있다. )

 

- Stack메모리는 함수가 호출되면 해당 지역변수가 쌓이게 되는데 함수가 종료되는 시점에서 Stack에 있는 메모리는 

자연스럽게 없어진다.

- 하지만 new로 생성된 힙(Heap) 메모리는 자연적으로 없어지지 않고 없애줘야하는데 Java에서는 가비지 컬렉터가 삭제를 시켜준다.

 

-즉, new로 객체를 생성하면 생성된 클래스는 힙(Heap)메모리에 인스턴스가 생성되고 , 생성된 인스턴스 영역의 주소값은 

 Stack에 생성된 참조 변수가 해당 인스턴스의 주소값을 가지게 된다.

그래서 참조 변수는 인스턴스가 가지고 있는 필드,메서드에 접근할 수 있게 된다.

'Java' 카테고리의 다른 글

Java 클래스 만들기(1)  (0) 2024.06.18
Spring 개념 정리(1)  (0) 2023.02.07
[Java]생성자 (Constructor)  (0) 2022.07.25
[Java] 메모리 구조  (0) 2022.07.23