자바의 정석

생성자 Constructor

야생늑대 2022. 4. 12. 18:11
반응형

 

  ※ 생성자는 메소드와 비슷한 모양을 가지고 있으나, 리턴타입이 없고 클래스 이름과 동일하다.

 

▶ 생성자 선언 방법


클래스 ( 매개변수선언, -----) {
   //객체의 초기화코드}

▶ 기본생성자   

  • 모든 클래스에는 생성자가 반드시 존재하며, 생성자를 하나이상 가질 수 있다.
  • 생성자를 선언하지 않아도 컴파일러가 기본생성자를 바이트코드에 자동으로 추가하기때문에  new 연산자로 생성자를 호출해서 객체를 생산할 수 있다.

 

public Class Members{
    public Members(){    }         <--- 매개값을 준 다른 생성자가 없을 시 자동생성
}

Members member = new Members();     <-- 기본생성자를 호출해서 객체를 만든다.

 

Members members = new Members("캐롤", "a1111");
       Members 생성자를 2개의 매개값을 주고 호출

 

public Class Members{
  필드 기본값으로 선언  
 String mid;
 String mpw;
 
Members(String mid, String mpw){     <---  두개의 매개값을 받기위해  같은 타입의 매개변수선언
this.mid = mid;
this.mpw = mpw;                       <--받은 매개값을 이용해서 필드 선언.( 필드에 값을 저장.)
}                                 
}
mid = 캐롤
mpw = a1111    이 된다.

  ↑ 위와 같이 매개값을 주고 생성자를 하나라도 만들면 기본생성자자동생성 되지않기때문에 기본생성자를

       호출할 수 없다.    이럴 때는 기본생성자를 직접 만들어주어야 호출할 수 있다.    

public Class Members{
  
 String mid;
 String mpw;
 
  public Members(){   
  }                                  <--직접 만들어준다.
  
  Members(String mid, String mpw){  
    this.mid = mid;
    this.mpw = mpw;                    
}
  • 필드가 외부에서 제공되는 다양한 값들로 초기화되어 사용되어야 한다면, 생성자에서 초기화해서 사용한다.
  • 객체 생성시 생성자의 매개값을 받아 필드값을 초기화해준다. 
  • 생성자의 매개변수 이름은 일반적으로 필드와 동일한 이름을 사용한다. 그러나 이렇게 되면 필드와 매개변수의 이름이 동일하기때문에 생성자내부에서 필드에 접근할 수 없다. (매개변수가 필드보다 우선순위가 더 높기때문이다.)
  •  해결방법은 필드앞에 this.  를 붙여 사용한다. this. 는 객체 자신의 참조(객체자신을 this라고 한다.)
반응형

'자바의 정석' 카테고리의 다른 글

인스턴스 멤버와 정적 멤버  (0) 2022.04.15
메소드 Method  (0) 2022.04.12
필드 Field  (0) 2022.04.11
클래스 Class  (0) 2022.04.11
객체 지향 프로그래밍 기본 개념  (0) 2022.04.10