[JAVA] 생성자

정은아·2022년 7월 18일
0
생성자()

: 생성자는 객체가 만들어 질 떄 자동으로 호출되는 메소드이고
  일반적인 메소드와 몇가지 차이점이 있습니다
  
  첫째는 생성자는 메소드의 반환 자료형을 표시하지 않습니다.
  둘째는 생성자는 객체가 생성될 떄 자동으로 호출됩니다.
  셋째는 생성자는 이름은 클래스의 이름과 같습니다.
  
   이러한 생성자의 사용 용도는 객체의 초기화 과정을 처리하기 위함입니다.
   생성자는 객체가 생성될 떄 한번만 수용하는 특수한 메소드 입니다.
   
   생성자 호출은 new 키워드가 수행 되면서 호출합니다.
   만약 클래스를 정의할 때 생성자를 만들지 않으면 객체 생송시
   자바에서 자동으로 생성자를 만들어 줍니다.
   
   . 자동으로 만들어지는 생성자의 모습
   
      클래스 명()       // 메소드의 매개변수와 본문이 전혀 없는 상태
          {  }        // 이러한 생성자를 default constructor라고 합니다.
                      // 결국 사용자가 생성자를 만들지 않아도 자동으로
                      // 생성되는 디폴트 생성자가 있기 때문에 모든 클래스는 
                      // 최소한 한 개 이상의 생성자가 있습니다.
                      
   . 생성자의 특징
   
     . 메소드의 이름이 클래스 이름과 동일합니다.
     . 메소드의 반화값이 없습니다.
     . 객체를 생성할 때 자동으로 호출됩니다.
     . 객체를 초기화하는 용도로 사용됩니다.
     
     
   . 생성자의 기본 형식
   
     [public/protected/private }  클래스이름(매개변수)
         {  
              .....; 초기화 문장
              .....;        
         }
         
    . new 키워드
      : new 키워드는 객체 생성과 관련된 일을 처리합니다.
           
           1. 객체 생성을 위해 메모리를 할당합니다.
           2. 할당된 메모리의 시작위치를 객체 참조 변수에 전달합니다.
           3. 생성자를 호춣합니다.
           
           new 키워드는 객체 생성과 관련된 모든 일을 처리합니다.
           MyTv obj = new My Tv();
                                     
                                     
    .this (static으로 선언된 애들은 this에 포함x)
     
    : 멤버 변수에서 사용되는 this
     
     : 디스는 현재 사용하고 있는 객체를 지시할 떄 사용하며
       객체가 생성되면서 자동으로 만들어지는 객체 참조형 변수 입니다.
       자기 자신이 객체를 참조할 때 사용하고 클래스의 멤버 변서, 생성자에서 
       사용할 수 있습니다.
       
     형식 
     
     1. this : 객체 자신을 참조하는 레퍼런스
     2, this() : 자신의 생성자 메소드
     
      this와 this()는 객체 자신의 멤버를 참조하기 위해 사용한다.      
      
      
      . Garbage Collection(쓰레기 수집)
      
      : 프로그램에서 쓰레기는 사용하지 않는 메모리 공간을 의미합니다.
        new 명령어로 객체를 사용하기 위한 메모리를 할당 받은 이후
        그 공간을 더 이상 사용하지 않으면 낭비되는 공간이 되고 맙니다.
        
        C++은 new 키워드를 사용해 객체를 생성하고, 객체 사용아 끝나면
        delete 키워드를 사용해 heap 공간에 할당된 메모리를 해제 합니다.
        
        객체를 만드는 과정을 생성자, 제거하는 과정을 소멸자라고 합니다.
        하지만 자바에는 소멸자가 존재하지 않습니다.
        자바는 Java virtual Machine (JVM : 자바 가상 머신)이 쓰지 않는 
        메모리를 찾아 자동으로 해제해 둡니다.
        
        자바에서 쓰레기 수집을 수행하는 시기는 정확하게 언제라고 
        정해져 있지 않습니다. 프로그램이 무언가를 바쁘게 처리하지 않을 떄 
        메모리에 쓰레기가 많이 쌓여 있을 때 와 같은 시기를 선택하여
        처리 합니다.
        자바에서 프로그램이 사용하는 메모리는 JVM이 모두 관리 합니다.
        제이브이엠 내에서 수행되는 Garbage Collection 동작은 제일 낮은
        우선 순위의 Thread입니다.
        
        System.gc(); //garbage collection 바로 실행시키는 코드
        
        
        
   .Inner Class(내부 클래스)
   
      : 클래스는 필드(변수)와 메소드를 멤버로 갖습니다.
        그런데 클래스를 멤버로 가질 수도 있습니다.
        새롭게 만들어진 클래스를 클래스의 멤버로 품을 수 있습니다.
        
        이와같은 클래스를 내부 클래스라 합니다.
        이러한 내부 클래스를 사용하는 이유는 서로 다른 클래스 사이에는
        일정한 제한 관계가 있기 때문입니다. 다른 클래스에 있는
        멤버에 접근하려면 접근 지정자에 의해 접근이 어려울 수 있습니다.
        이때 내부 클레스를 사용하면 그러한 제한이 사라지기 때문에
        클래스 사이의 데이터 교환이 쉬워집니다.
        클래스 안에서 선언된 클래스도 클래스의 멤버이기 때문에
        접근 제한이 없습니다.
        
      .종류 
      
         . Nested Class(중첩 클래스) : 내부 클래스가 static로 선언된 정적 클래스  
           
         . Member Class(멤버 클래스) : 내부 클래스가 static가 붙지 않은 비정적 클래스
            
         . Local Class (지역 클래스) : 메소트 블럭 내부에서 선언된 클래스
          
                                
profile
꾸준함의 가치를 믿는 개발자

0개의 댓글