생성자

jisoo·2022년 7월 11일
0

this, this()

목록 보기
1/1

생성자란?

객체를 생성하는 역할을 하는 구성 요소로서, 인스턴스가 생성될 때 호출되는 인스턴스 초기화 메서드라고 정의한다.

  • new 키워드를 사용하여 객체를 생성할 때 호출되는 것이 생성자이다.

  • 생성자는 인스턴스 변수들을 초기화하는 데 사용되는 특수한 메서드이다.

  • 생성자의 이름은 반드시 클래스의 이름과 같아야 한다.

  • 생성자는 리턴 타입이 없다. 하지만 메서드에서 리턴 값이 없을 때 표시하는 void 키워드를 사용하지 않는다.

  • 생성자는 오버로딩이 가능하므로 한 클래스 내에 여러 개의 생성자가 존재할 수 있다.

cf. 메서드 오버로딩 : 하나의 클래스에 같은 이름의 메서드를 여러 개 정의하는 것을 의미한다.

  • 오버로딩의 조건
    • 같은 이름의 메서드명 써주기
    • 매개변수의 개수 or 타입이 다르게 정의되어야 한다.


this() 🤯

this() 를 통하여 생성자상호 호출이 가능하다.

  • this() 메서드는 자신이 속한 클래스에서 다른 생성자를 호출하는 경우 사용한다.
  • this() 메서드를 사용하기 위해서는 크게 2가지 문법요소를 충족시켜야 한다.
    • 첫 째, this() 메서드는 반드시 생성자의 내부에서만 사용할 수 있다.
    • 둘 째, this() 메서드는 반드시 생성자의 첫 줄에 위치해야 한다.

public class Test {

    public static void main(String[] args) {
        Example example = new Example();
        Example example2 = new Example(5);
    }
}

class Example {
    public Example() {
        System.out.println("Example의 기본 생성자 호출!");
    }

    public Example(int x) {
        this();
        System.out.println("Example의 두 번째 생성자 호출!");
    }
}

// 출력 
Example의 기본생성자 호출!

Example의 기본생성자 호출!
Example의 두 번재 생성자 호출!

this🔥

인스턴스 변수와 매개변수를 이름만으로는 구분하기가 어려워지는 문제가 발생하게 되는데, 이를 구분해주기 위한 용도로 주로 사용되는 방법이 this 키워드이다.

public class ConstructorExample {

    public static void main(String[] args) {
        Car car = new Car("Model X", "빨간색", 250);
        System.out.println("제 차는 " + car.getModelName() + "이고, 컬러는 " + car.getColor() + "입니다.");
    }
}

class Car {
    private String modelName;
    private String color;
    private int maxSpeed;

    public Car(String modelName, String color, int maxSpeed) {
        this.modelName = modelName;
        this.color = color;
        this.maxSpeed = maxSpeed;
    }

    public String getModelName() {
        return modelName;
    }

    public String getColor() {
        return color;
    }
}
// 출력
제 차는 Model X이고, 컬러는 빨간색입니다.

  • this.modelName = modelName 대신 modelName = modelName 라고 작성하면 둘 다 지역변수로 간주되게 된다.

  • 모든 메서드에는 자신이 포함된 클래스의 객체를 가리키는 this 라는 참조변수가 있는데, 일반적인 경우 컴파일러가 this. 를 추가해주기 때문에 생략하는 경우가 많다.

  • this 는 인스턴스 자기 자신을 가리키며, 우리가 참조변수를 통해 인스턴스의 멤버에 접근할 수 있는 것처럼 this 를 통해서 인스턴스 자신의 변수에 접근 할 수 있다.

profile
Backend Developer 👩🏻‍💻

0개의 댓글