IT/java

자바 - 클래스에서 인스턴스(Instance) 생성과 사용

토희 2022. 5. 9. 23:51
728x90

자바의 정석 책을 토대로 작성하였습니다.

 

- 클래스로부터 인스턴스 생성하는 방법

클래스명 변수명;                 // 클래스의 객체를 참조하기 위한 참조변수 선언
변수명 = new 클래스명();   //클래스의 객채를 생성후, 객체의 주소에 참조변수 저장

Tv t;                                  // Tv클래스 타입의 참조변수 t를 선언
t = new Tv();                   // Tv인스턴스를 생성한 후, 생성된 Tv인스턴스의 주소를 t에 저장

 

1. Tv t;
Tv클래스 타입의 참조변수 t선언, 메모리에 참조변수 t를 위한 공간이 마련, 아직 인스턴스 생성되지 않았으므로 참조변수로 아무것도 할수 없음

 

 

2. t = new Tv();
연산자 new에 의해 Tv클래스의 인스턴스가 메모리의 빈 공간에 생성. 이 떄, 멤버변수는 각 자료형의 해당하는 기본값으로 초기화됨 (color는 참조형이므로 null, power는 boolean이므로 false, channel은 int이므로 0으로) 그 다음 대입연산자(=)에 의해 생성된 객체의 주소값이 참조변수 t에 저장! 이제는 참조변수 t를 통해 Tv인스턴스에 접근할 수 있음, 인스턴스를 다루기 위해서는 참조변수가 반드시 필요!

 

Tv t;
t = new Tv();

위의 두 문장을 밑에 한 문장으로도 가능!

Tv t = new Tv(); 

 

 

3. t.channel = 7;
참조변수 t에 저장된 주소에 있는 인스턴스의 멤버변수 channel에 7을 저장한다. 인스턴스의 멤버변수(속성)을 사용하려면 참조변수.멤버변수(t.channel) 와 같이 사용

 

 

4. t.channelDown();
참조변수 t가 참조하고 있는 Tv인스턴스의 channelDown메서드 호출


- 인스턴스는 참조변수를 통해서만 다룰 수 있으며, 참조변수의 타입은 인스턴스의 타입과 일치해야 한다!

- 인스턴스 두개가 같은 클래스로부터 생성되었을지라도, 각 인스턴스의 속성(멤버변수)은 서로 다른값으 유지 가능, 메서드의 내용은 모든 인스턴스에 대해 동일함

- 자신을 참조하고 있는 참조변수 하나도 없는 인스턴스는 더 이상 사용되어질 수 없으므로 '가비지 컬렉터(Garbage Collector)에 의해 자동적으로 메모리에서 제거

- 참조변수에는 하나의 값(주소)만이 저장될 수 있으므로 둘 이상의 참조변수 하나의 인스턴스를 가리키는(참조하는) 것은 가능하지만 하나의 참조변수로 여러 개의 인스턴스를 가리키는 것은 불가능

728x90