인스턴스(instance)
- 클래스는 객체의 속성을 정의하고, 기능을 구현하여 만들어 놓은 코드 상태
- 실제 클래스기반으로 생성된 객체(인스턴스)는 각각 다른 멤버 변수 값을 가지게 됨
가령, 학생의 클래스에서 생성된 각각의 인스턴스는 각각 다른 이름, 학번, 학년 등의 값을 가지게 됨 - new 키워드를사용하여 인스턴스 생성
예시
쉽게 이해하기 위해 붕어빵에 비유를 해보자
붕어빵을 만들려면 붕어빵을 찍기 위한 틀이 있어야 한다.
틀이 준비되었다면 틀에 밀가루 반죽과 팥을 집어넣고 구워준다.
적당히 구워지면 틀에서 꺼낸다. 그로서 붕어빵이 탄생!
이 과정을 Class, Object, Instance의 관점에서 살펴보자
우선 일대일 대응을 시켜 보도록 하자
o 붕어빵틀 = Class o 붕어빵 = Object
o 각각의 붕어빵 = Instance o 붕어빵을 굽다 = 인스턴스(Instance)화 하다
역시 비유를 하면 이해하기 비교적 수월하다.
그럼 붕어빵이란 Class에 대해 생각해 보도록 하자
붕어빵틀은 ‘밀가루 반죽’과 ‘팥’이라는 변수(member variable)를 가지고 있다.
그리고 ‘굽다’라는 메서드(member method)를 가지고 있다
이것을 일반적인 class의 표현법으로 나타내 보면..
그럼 이제 붕어빵을 구워 보자?
일단 붕어빵틀에 밀가루 반죽과 팥을 집어넣어보자.
각각의 붕어빵에 서로 밀가루 반죽과 밭의 양을 각각 다르게 집어넣어보겠다.
이제 ‘굽다()’라는 메서드를 호출해서 붕어빵을 굽는다.
지금 과정이 인스턴스(Instance)화 되고 있는 것이다.
힙 메모리(heap memory)
- 생성된 인스턴스는 동적 메모리(heap memory)에 할당 됨
- C나 C++ 언어에서는 사용한 동적 메모리를 프로그래머가 해제 시켜야 함
- 자바에서는 GC(Gabage Collertor) 가 주기적으로 사용하지 않는 메모리를 수거
- 하나의 클래스로부터 여러개의 인스턴스가 생성되고 각각 다른 메모리 주소를 가지게 됨
붕어빵 참고자료:https://victor8481.tistory.com/280
'Java' 카테고리의 다른 글
[Java] GET,SET을 사용하는 이유 (0) | 2022.09.25 |
---|---|
[자바] 생성자(constructor) (0) | 2022.09.25 |
[자바] 함수와 메서드 (0) | 2022.09.21 |
[자바] 객체(Object) (0) | 2022.09.21 |
[자바] 반복문(while, for) (0) | 2022.09.20 |