🔷 생성자란

🔸 인스턴스가 생성될 때 호출되는 인스턴스 '초기화' 메서드
🔸 조건
- 생성자의 이름은 클래스의 이름과 같아야 한다.
- 생성자는 리턴값을 가지지 않는다.
- 모든 클래스는 하나 이상의 생성자를 가져야 한다.
생성자가 아니라 new 연산자가 인스턴스를 생성하는 것.

🔷 기본생성자

🔸 모든 클래스는 반드시 생성자를 가져야 하지만 생성자가 하나도 정의되지 않은 경우, 컴파일러가 자동적으로 기본생성자를 추가해서 컴파일한다.

class Math{
    long a, b;
    // 기본생성자    
    Math(){}
}    

🔷 매개변수를 가진 생성자

🔸 호출 시 매개변수를 넘겨받아 인스턴스 초기화에 사용할 수 있다.
🔸 매개변수를 가진 생성자가 있을 경우 컴파일러가 기본생성자를 추가해주지 않는다. ➡️ 기본생성자도 직접 추가해줘야 한다.
🔸 매개변수를 가진 생성자를 사용하면 코드를 좀 더 간결하게 만들 수 있다.

class Car{
    String color;
    String gear;
    int door; 
    // 기본생성자
    Car(){}
    // 매개변수를 가진 생성자
    Car(String c, String g, int d){
        color = c;
        gear = g;
        door = d;
    }
}
class Test{
    public static void main(String args[]){
        Car c1 = new Car();
        c1.color = "black";
        c1.gear = "manual";
        c1.door = 4;
       
        Car c2 = new Car("black", "auto", 4);
    }

🔷 this(), this

🔸 this() : 생성자, this : 참조변수
🔸 생성자끼리도 서로 호출이 가능하다.
🔸 호출 조건
- 생성자 이름으로 클래스 이름 대신 this를 사용한다.
- 다른 생성자를 호출할 때는 반드시 첫 줄에서만 호출이 가능하다.

class Car{
    String color;
    String gear;
    int door; 

    Car(){
        this("white", "auto", 4); 
        // Car(String color, String gear, int door)를 호출 ➡️ default값 설정
    }
    Car(String color){
        this(color, "auto", 4); // 
    }
    Car(String color, String gear, int door){
        this.color = color; 
        this.gear = gear;
        this.door = door;
        // this.color : this - 인스턴스 자신을 가르키는 참조변수, color - 인스턴스 변수 ➡️ 
        // color : 지역변수
    }    
}    
profile
백견이 불여일타

0개의 댓글

Powered by GraphCDN, the GraphQL CDN