본문 바로가기
dev/JAVA

[JAVA] 객체 생성

by dev_Step 2022. 5. 29.

 

클래스(설계도) 객체(제품)
TV 설계도 TV
핸드폰 설계도 핸드폰

 

클래스 : 설계도라고 생각 하면된다.

TV를 만들기 위해서는 설계도가 필요한데  설계도 안에는 TV에 필요한 기능, 속성 등 여러가지 속성들이 들어 있다고 생각

하면된다.

 

즉.. 아래보면 Tv 라는 클래스가 정의되어 있고, 가로,세로, 볼륨, 체널, 여러 기능들이 정의되어 있다.

하지만 클래스는 말그대로 설계도 일 뿐이고.. Tv를 사용하려면 Tv라는 객체를 생성해야 한다.

객체를 만들때는 new 라는 명령어를 통해서 생성한다.

객체를 생성하기 위해서는

new 라는 키워드를 사용해서 생성한다. 방법은

               클래스(타입)    참조변수( 왼쪽에 있는 클래스의 참조변수)    =     new        생성자():        

 

new : 인스턴스를 생성한다.  메모리에 공간을 할당해준다.  --->  생성자();

즉 생성자()를 통해서 초기화된 -> 인스턴스(객체)를 생성하여  메모리 공간에 할당해 준다.

이렇게 생성된 인스턴스의 주소를   참조변수에 저장해준다.

new 키워드를 통해서 인스턴스를 생성하였고 Tv() 생성자를 통해서 인스턴스를 초기화 하였다.

이렇게 생성된 인스턴스의 주소값을 t1(참조변수)에게 저장한다.

 

그 후에 객체를 사용하려면  '참조변수를 통해서 사용한다.'

t1.vol   // t1.channel

 

1) Method 영역에 클래스가 올라가고

2) stack 영역에   main메서드가 올라가고  main메서드안에서  

  2-1) Tv 클래스가  Method 영역에 올라가고

  2-2) main 영역에 t1 참조변수가 생성되고

  2-3) Heap 영역에 Tv() 인스턴스가 생성되고 주소가 할당됨(생성자에 따라 인스턴스 변수의 초기화가 달라짐)

  2-4) 생성된 인스턴스의 주소를 참조변수 t1에 저장

 

이번에는 생성자를 다르게 해서 인스턴스를 생성하면

'

인스턴스 생성할때, Tv(int a, int b) 생성자를 사용하여 인스턴스(객체)를 초기화 하므로 vol, channel 값이 변경된 것을 확인

할 수 있다.

 

 

이렇게 생성된 인스턴스는 참조변수를 통해서만 사용할 수있으며,, 참조변수의 타입은 인스턴스의 타입과 일치해야 한다.

그렇게 때문에  생성한 인스턴스의 주소값을 참조변수에 넣어서 사용한다.