about. What I learned

객체 {클래스의 인서턴스화(복제)}

Logan. 2021. 3. 4. 10:09

객체

원본이라고 할 수 있다. 그리고 메인 메소드 아래 혹은 위에 생성하는 클래스는 원본의 설계도 즉 틀이라고 보는게 맞겠다.

 

Tv t;

>>>>>  티비 클래스 타입의 객체의 위치를 담을 수 있는 참조변수 t라는 이름을 가진 공간을 만들어줘

 

t = new Tv() 

>>>>>  그리고 메인 메서드에서 객체의 클래스를 사용할거니깐 TV클래스를 인스턴스화 시켜줘(객체의 멤버들을 저장공간에서 메모리로 복사해줘 그리고 그 위치를 t에 저장해줘

 

위 두 부분을 하나로 합쳐서 Tv t = new Tv(); 이렇게 표현함

 

Tv t1 = new Tv() 는 또다른 객체가 복사되어 생성된 것이기 때문에 위의 생성과는 무관하다.( t1 이라는 참조 변수에 새로운 인스턴스의 위치가 저장된다.)

 

t.channel = 

>>>>> t = 인스턴스화된 클래스의 위치를 이야기한다. channel = 인스턴스의 구성 중 채널에 어떤 값을 저장하겠다는 명령어다. 즉 인스턴스(객체)는 참조변수 t 라는 리모콘을 통해서만 활용할 수 있다. ( t 위치에 저장된 channel 변수(저장공간)를 사용할 꺼야 그리고 입력되는 값을 저장할꺼야. 단, 메서드가 끝날때까지만 유효해

 

객체 배열  

 

Array는 같은 타입의 변수 여러개를 한번에 정리할 때 사용하는 클래스이다. 기본 모양은 int[] t = new int[3] 이런식이다. (배열을 정리할 때 다시 써놓겠다.) 

객체 배열은 생성된 배열 안에 숫자 혹은 문자가 들어가는 것이 아니라 생성된 객체들의 주솨 저장된다.

Tv[] tvArr = new Tv[3]

for (int i = 0; i<tvArr.length;i++) {

         tvArr[i] = new Tv();  }

위의 기본 배열과는 다르게 기본형이 아니라 참조형 타입이 들어가며  생성된 3개의 공간{ Tv[0],Tv[1],Tv[2]}에 각각 자신의 객체 주소가 저장되게 된다. 

for 문을 사용하는 이유는 배열이 너무 많아지게되면 각 배열에 객체를 생성하여 위치를 저장하는 것이 불가능해진다. 따라서 for문을 사용하여 객체를 생성하고 위치를 저장하는 행위를 반복하여 두줄의 코딩으로 간소화 시킨다.