본문 바로가기

Java

자바 : 생성자

728x90

📗 생성자

생성자는 객체가 생성될 때 초기화를 위해 실행하는 메소드를 말한다.

 

✅ 생성자의 특징

- 생성자는 메소드이다.

- 생성자 이름은 클래스 이름과 반드시 동일해야 한다.

- 생성자는 매개 변수 개수를 달리하여 같은 이름으로 여러개 작성 가능하다. (오버로딩)

- 생성자는 new 를 통해 객체를 생성할 때 객체 당 한번 호출 된다.

- 생성자의 목적은 객체를 초기화 함에 있다.

- 객체가 생성될 때 반드시 호출되기 때문에 따라서 하나 이상 선언되어야 한다.

만약 개발자가 생성자를 작성하지 않으면 컴파일러가 자동으로 기본 생성자를 삽입해준다.

 

 

📗 기본 생성자

기본 생성자는 매개 변수가 없고 아무 작업 없이 단순 리턴하는 생성자이다.

디폴트 생성자 라고도 한다.

 

기본 생성자가 없어도 컴파일 오류가 나지 않는다.

-> 컴파일러가 자동으로 기본 생성자를 삽입해주기 때문이다.

 

개발자가 클래스에 하나라도 생성자를 만들면 기본 생성자를 자동으로 삽입하지 않는다.

 

class Animal{
    public Animal(){} // 기본 생성자
}


class Animal{
    public void setName(); // 기본 생성자가 없어도 오류가 나지 않음
}

Animal cat = new Animal(); // 컴파일러가 자동으로 기본 생성자를 삽입하기 때문

---------------------------------------------------------------------------------

class Animal{
   public Animal(String name){}; // 사용자가 생성자를 하나라도 만들면
}

Animal cat = new Animal(); // 오류 발생
Animal cat = new Animal("김애용"); // 오류 발생 X, 만든 생성자에 맞춰 매개 변수를 넣어주어야 함

 

📗 this 레퍼런스

this는 객체 자신에 대한 레퍼런스이다.

 

✅ this의 필요성

- 객체의 멤버 변소와 메소드 변수의 이름이 같은 경우 사용

- 다른 메소드 호출 시 객체 자신의 레퍼런스를 전달할 때 사용

- 메소드가 객체 자신의 레퍼런스를 반환할 때 사용

 

class Car{

    private String name;
    private int price;
    
    public Car(String name, int price){ // 매개변수와 멤버 변수의 이름이 같음
        this.name = name;  // this를 사용
        this.price = price;
    
    }
}

 

📗 this()

클래스 내의 다른 생성자를 호출할 때 사용한다.

생성자 내에서만 사용이 간으하다.

반드시 생성자 코드의 제일 처음에 수행한다.

 

class Car{

    String name;
    int price;
    
    public Car(){
        this("","");
        System.out.println("생성자 호출");
    }
    
    public Car(String name){
        this(name, "3333");
    }

    public Car(String name, int price){
        this.name = name;
        this.price = price;
    }
}

Car porshe = new Car("포르쉐", 100000); // 포르쉐, 100000
Car audi = new Car("아우디"); // 아우디, 3333

 

728x90
반응형

'Java' 카테고리의 다른 글

자바 : static, final  (0) 2024.02.12
자바 : 객체 배열과 메소드  (0) 2024.02.09
자바 : 클래스와 객체  (0) 2024.02.06
자바 : 배열과 예외 처리  (0) 2024.02.05
자바 : 자바의 데이터 타입  (0) 2024.02.05