코드스테이츠_국비교육/[Section1]

12_객체지향 프로그래밍 기초2(생성자)_22.09.05

생각없이 해도 생각보다 좋다. 2022. 9. 4. 20:04

체크포인트

  • 생성자의 개념과 기본 문법의 이해
  • 생성자가 메서드의 차이 (두 가지의 조건)
  • 생성자의 오버로딩
  • Default 생성자
  • this 와 this() 의 차이에 대해 설명할 수 있다.

 

생성자

>의미

: 인스턴스의 변수들을 초기화하는 메서드

: 모든 클래스에는 반드시 생성자가 하나 이상 있어야 한다.

 

>new 키워드

FishBread fish = new FishBread( );
//중괄호( )가 있는것으로 보아하니 메서드구만
//저게 생성자다!

: new 뒤에 따라오는 것이 참조타입이 아닌 사실 생성자이다!

: new는 인스턴스의 생성을, 생성자는 생성된 해당 인스턴스의 변수를 초기화를 담당함.

 

>조건

  1. 생성자의 이름은 클래스의 이름과 같아야 한다.
  2. 생성자의 리턴 타입 자체가 없다. (void도 안됨)

>생성자의 오버로딩

: 생성자도 오버로딩이 가능함.

: 즉, 인스턴스마다 원하는 용도로 인자를 제공할 수 있게 코드를 짤 수 있음.

 

>생성자의 구조; 일반적인 생성자

class FishBread {
	private String stuffType;
    private String degreeOfBurn;
    
    /*---생성자---
    1. 클래스명(FishBread)과 같은 이름.
    2. 반환 타입이 없음.
    : 인스턴스 생성 시 인자를 받아 인스턴스 변수를 초기화 시킴.*/
    public FishBread(String stuffType, String degreeOfBurn){
    /* 클래스 변수 = 매개 변수 */
    	stuffType = stuffType;
        degreeOfBurn = degreeOfBurn;
    }
}

 

>Default 생성자

: 생성자를 따로 작성하지 않으면 자바 컴파일러가 자동으로 만드는 생성자.

: 매개변수와 블럭 내용이 없음.

class FishBread {
    
    public FishBread(){}
    
    /*---default 생성자---
    1. 매개변수가 없음
    2. 몸체 내용이 없음
    3. 만약 따로 생성자를 지정하지 않으면 컴파일러가 아래와 같은
    default 생성자를 생성함.*/
}

 

>this( ); this 메서드

: 생성자내에서 현재 클래스에 존재하는 다른 생성자를 호출하는 메서드.

: this 메서드에 주는 인자를 통해 어떤 생성자를 불러올 지 선택할 수 있다.

: 생성자 내에서만 사용가능하다.

: 다른 생성자 호출문은 생성자 내에서 한 번 쓸 수 있고, 맨 처음 구문에서 사용할 수 있다.

 

>this; this 키워드

: 주로 생성자 내에서 사용됨.

: 현재 속해있는 클래스명을 대신하여 사용.

: 명확한 구분을 위해서 변수명을 this를 통해 호출하거나, 반환값에 this를 사용하여 객체(클래스)의 참조값을 반환할 수 있

음.

class FishBread {
	private String stuffType;
    private String degreeOfBurn;
    
    /* 생성자의 구조 코드 블럭 내용 비교할 것.
	---this---
    : 해당 클래스를 의미함.*/
    public FishBread(String stuffType, String degreeOfBurn){
    /* 클래스 변수 = 매개 변수 */
    	this.stuffType = stuffType;
        this.degreeOfBurn = degreeOfBurn;
        //사실 이전 코드가 아닌 지금 코드와 같이 써야함.
        //초기화시킬 변수와 매개변수가 명확히 구분됨.
    }
    
    //반환값의 this
    //인스턴스의 참조값을 반환.(힙 메모리 영역)
    public FishBread getFishBread(){
    	return this;
    }
}

 

//추가 설명; getMethod, setMethod