Java | 생성자와 this

Lumpen·2025년 4월 7일
0

Java

목록 보기
6/38

생성자 (Constructor)

객체를 생성하는 시점에 어떤 작업을 하고 싶을 때 생성자를 작성한다
주로 멤버 변수에 초기값을 전달하는데 사용된다

  • 생성자의 이름은 클랫의 이름과 같아야 한다 (파스칼 케이스)
  • 생성자는 반환 타입이 없다
  • 나머지는 메서드와 같다

생성자는 인스턴스 생성 직후 바로 호출된다
new 키워드를 사용해 객체 생성 시 마지막 괄호를 추가하는 이유도
생성자를 호출하기 위함이다
객체를 생성하면서 바로 생성자 호출도 함께 일어난다는 의미를 포함한다

생성자는 new 키워드와 함께 사용하여 객체를 생성하는 역할을 하고
인스턴스를 반환하기 때문에 반환 값을 따로 작성하지 않는다

생성자의 장점

  • 생성자는 초기값을 설정하는 중복 호출 제거할 수 있다
  • 코드에 초기값을 전달하는 코드를 강제하여 실수를 예방할 수 있다

기본 생성자

  • 매개변수가 없는 생성자
  • 명시적으로 생성자를 작성하지 않으면 암묵적으로 생성자를 생성한다
  • 생성자가 하나라도 있으면 기본 생성자를 만들지 않는다
  • 생성자는 반드시 호출되어야 한다
  • 생성자가 없으면 기본 생성자가 제공된다
  • 생성자가 하나라도 있으면 기본 생성자가 생성되고, 개발자가 정의한 생성자를 직접 호출해야 한다

this

인스턴스의 this 는 자신의 참조값을 가리킨다
this 는 생략 가능하지만
생성자에서 초기값으로 받는 매개변수가 있다면
매개변수는 지역변수로 필드보다 우선순위가 높다
때문에 멤버변수에 접근 시 this 를 항상 사용하기도 한다
최근에는 초기값 매개변수와 멤버 변수의 이름을 달리하여 this 를 생략하는 쪽으로
발달하였다 ide 가 멤버 변수의 필드를 한 눈에 구분할 수 있도록 해주기 떄문

public class Member {
	String name;
    int age;
    
    void Member(String name, int age) {
    	this.name = name;
        this.age = age;
    }
}

Member member1 = new Member("user1", 30);

오버로딩과 this()

생성자도 생성자 오버로딩을 통해 메서드처럼 여러 생성자를 같은 이름으로 작성 가능하다
오버로딩 시 this() 를 호출하면 생성자 내부에서 오버로딩된 다른 생성자를 호출할 수 있다

public class Member {
	String name;
    int age;
    int grade
    
    void Member(String name, int age) {
		this(name, age, 50) // 기본값으로 50 을 설정하여 오버로딩 생성자 호출
    }
    
    void Member(String Name, int age, int grade) {
    	this.name = name;
        this.age = age;
        this.grade = grade
    }
}

Member member1 = new Member("user1", 30);
  • this() 는 생성자 최상단에서만 작성 가능
profile
떠돌이 생활을 하는. 실업자, 부랑 생활을 하는

0개의 댓글