티스토리 뷰

프로그래밍/java

인스턴스(instance)

이불이! 2018. 10. 29. 11:13
728x90

https://nibble2.tistory.com/8 앞의 내용


앞서 설명했듯이 Instance는 시스템 메모리에 올라가 있는 상태이고 우리가 호출하여 사용할 수 있는 상태이다.


인스턴스를 생성하는 문법은 우리가 익히 알고있듯이


Tv myTv = new Tv(); 


이렇게 생겼는데, "=" 요 아이는 대입연산자로 우리가 대입연산자의 정의를 배웠을 때 분명 왼쪽과 오른쪽의 type이 같아야 한다고 배웠다.

그럼 TV myTv = new Tv(); Type이 같다는 말인데,,, 그럼 정확히 new Tv() 의 타입은 무엇일까? 한번 생각해보자구요. 


생각 다 하셨나요? 뭐인것 같나요 int? string? 아니 정확히 new Tv();가 무엇을 뜻하는지 알고있나요?


앞에서 인스턴스는 메모리에 올라가 있는 상태라고 하였는데 이말은 즉, 인스턴스는 유니크한 주소를 갖고있다는 말입니다.

주소값 = 인스턴스 라는 말이 아닙니다. 


천천히 살펴봅시다.


일단 인스턴스를 만들기 위해서는 class가 반드시 필요합니다. 

Tv myTv; 

// 클래스의 객체를 참조하기 위한 변수를 선언한다. 클래스 또한 reference Type이다.


myTv = new Tv(); 

// new Tv는 새로운 주소값을 생성합니다. 대입연산자가 사용되었음으로 myTv는 무조건 newTv와 같은 type이여야 합니다.

결국 Type은 주소타입(reference value)입니다. 왜냐 new Tv가 만든 유니크한 주소를 myTv라는 변수가 받아야하니까요.



개발자는 인스턴스에 직접 접근할 수 없습니다. 무조건 주소를 따라갈 수 밖에 없습니다.