세상에 이상을 더하다.

지금, Rooti와 함께라면.

Rooti는 상상을 만드는 공방입니다.

Lecture/Java

내 Class 사용 설명서 :인스턴스화, 참조변수

nanun_u.l_0 2023. 1. 19. 16:16

이제 앞에서 설명한 클래스를 어떻게 사용할 것인지에 대해 알아보자.

 

참조변수( Reference Variable )

 

클래스 하나가 다음과 같이 존재한다고 하자.

 

( 수정사항 --> String[ ] coupons = new String[2]; )

 

이렇게 설계도를 만들었으니 이들을 사용해 보자. 이때 참조변수인스턴스화가 필요하다.

 


 

위 코드에서 A,B,whopper_Set, janmang_Loopy 가 각각 '참조변수'이다. 설계도가 만들어져 있으니 설계도를 그대로 사용하는 여러 인스턴스들을 만든 것이다. 여기서 인스턴스라는 단어가 나오는데... 인스턴스는 한국어로 '객체'이다.

 

하지만 나는 '인스턴스' 와 '객체'를 다른 의미로 사용할 것이다.

( 참고한 책에서 그렇게 배웠습니다. "교과서 위주로 공부했어요" )

 

Person{} 와 Burger{} 라는 각각의 클래스를 동치로 '객체' 이라고 부를 것이고, 

A,B,whopper_Set, janmang_Loopy 와같은 참조변수들로 만들어진 한 덩어리를 '인스턴스'

라고 부를것이다.

Do it! 자바프로그래밍 입문(박은종), 5-4 클래스와 객체

Person A라는 코드는 우리가 평소에 정수 a를 '선언' 할때 int a 를 적는것과 똑같이 생각해 주면 된다. 즉, Person 이라는 Class와 똑같이 생긴 A 라는 인스턴스를 선언하는 코드가 바로 Person A이다. (Class 이름) (참조변수 이름)의 형식으로 선언을 한다.

그러면 그 뒤의 new Person(); 은 무엇일까?

 

인스턴스화( Instantiate )

 

선언만 하고 끝나면 안 되지 않을까? 우리가 새해 계획을 세우고 실행을 안 하면 의미가 없는 것과 같은 이치이다 ㅋ.

 

실제로 컴퓨터에게 "우리가 이것을 사용할 것이니 그에 맞는 메모리를 할당해 주어라!" 라고 하는 것을 인스턴스화 라고 한다. 즉, 인스턴스를 메모리에 올린다고 해서 인스턴스'화' 인 것이다.

설계도와 같은 형식(체계)을 가지면서 새로운 하나의 인스턴스를 만든다고 하여 'new'를 붙이고

뒤에 클래스 이름을 다시 붙여주면 된다.

( 후에 생성자라는 개념을 배우면 더 자세히 공부할 수 있다. )

 

(Class 이름) (참조변수 이름) --> 선언
= new (Class 이름) (); --> 인스턴스화
 (Class 이름) (참조변수 이름) = new (Class 이름) (); --> 선언과 동시에 인스턴스화

- 엄청난 정리

잔망루피

C#에서의 인스턴스화 (망상)

아직 자바에 대해 공부하고 있는 중이기 때문에 신뢰성 0%의 말이니 유의 바란다.

 

게임을 개발하기 위해 C#을 사용할 때 물론 하나의 스크립트를 만들어 여러 오브젝트에 

대응시키기 위해 하나의 클래스를 만들고 여러 메모리를 할당시킨다. 이것은 자바와 

다를 것이 없지만, 여러 오브젝트 사이의 실시간 상호작용을 위해 다른 메모리에 직접 

바로바로 접근을 해야 하므로 여기서 차이가 생긴다. 본 글에서의 예시 코드에서도

Test라는 클래스에서 Person , Burger라는 각 클래스의 인스턴스를 참조변수를 통해

새로이 만들고 메모리도 할당시켰다.

하지만 게임개발을 할 때는 이렇게 새로운 클래스를 계속 만드는 것뿐만 아니라 이미

만들어진 메모리에 있는 값을 여러 클래스에서 접근하여 바꿀 수 있다는 차이점이 있다.

 

이렇게 다른 오브젝트의 정보에 접근하고 수정할 수 있게 하는 함수가 바로

GetComponent< >(); - 특정 Object의 Component에 접근하기 위해서 사용

- 이 스크립트를 넣을 오브젝트의 컴포넌트에 접근
FindObjectOfType< >();  - 특정 Object 자체에 접근하기 위해서 사용

- 그 스크립트를 들고있는 오브젝트에게 접근

이다.

반응형

'Lecture > Java' 카테고리의 다른 글

생성자( Constructor ), 변수 유효 범위  (1) 2023.01.23
도트 연산자 (dot operator)  (2) 2023.01.23
객체지향의 꽃 Class  (0) 2023.01.19
(Procedural || Object-Oriented) Programming  (2) 2023.01.19
자바를 잡아볼까나?  (0) 2023.01.19