생성자(Constructor)
생성자는 인스턴스를 초기화 해주는 메서드를 의미한다.
컴파일러가 자동적으로 생성해주는 기본 생성자, 사용자가 직접 생성하는 매개변수가 있는 생성자로 구분한다.
위의 코드처럼 생성자는 인스턴스 변수를 초기화 해주는데 직접 객체를 생성하고 변수를 하나씩 초기화 해주는 것이 아닌 생성자를 통해서 변수를 초기화하여 코드의 양을 줄일 수 있게 해준다.
그럼 생성자를 만들기 위해서는 어떤 조건이 있을까
생성자의 조건
1. 생성자 이름은 클래스와 이름이 같아야 한다.
2. 반환값이 존재하지 않는다.
3. 모든 클래스는 반드시 생성자를 가져야 한다.
먼저 생성자의 이름은 클래스 이름과 같아야 한다. 코드와 같이 Car 라는 클래스에서 만들어진 생성자는 Car 이름을 가지고 있다. Car 생성자는 결국 Car 클래스의 인스턴스 변수를 초기화 하기 위해서 만들어지기 때문에 클래스와 이름이 같아야 한다.
또한, 생성자는 인스턴스 변수를 초기화하기 위한 목적을 가지고 있기 때문에 반환값이 존재할 필요가 없다. 따라서 반환 타입을 따로 붙여주지 않는다.
마지막으로 앞서 언급한 것과 같이 생성자를 만들지 않으면 컴파일러가 자동으로 기본 생성자를 추가해주기 때문에 모든 클래스는 곧 생성자를 가지고 있게 된다.
참조변수 this & 생성자 this()
생성자를 사용할 때 this를 활용하면 코드의 중복을 줄이고 가독성을 높일 수 있다.
참조변수 this
참조변수 this는 자기자신을 가리키는 변수를 의미하고, 지역 변수와 인스턴스 변수를 구별하기 위해 사용된다.
왼쪽의 코드와 같이 받아온 지역 변수를 인스턴스 변수에 대입할 경우 구분하기 힘들다는 단점이 있다. 오른쪽 코드처럼 참조변수 this를 사용하여 지역 변수와 인스턴스 변수를 구분함으로 코드의 가독성을 높일 수 있다.
생성자 this()
생성자 this()는 다른 생성자를 호출할 때 사용한다.
코드 처럼 생성자 this()를 사용하여 매개변수가 3개인 Bike 생성자를 호출할 수 있다. 이를 통해 중간에 브랜드 이름이 바뀌었을 경우 해당 코드처럼 관리하여 코드의 중복을 줄일 수 있다.
생성자 this()를 사용할 경우 조심해야 될 부분으로 생성자 this()를 호출할 시 반드시 본문의 첫 번째 구문이어야 한다는 것을 조심해야 한다.
'자바' 카테고리의 다른 글
객체 지향 프로그래밍 - Super (0) | 2023.08.15 |
---|---|
객체 지향 프로그래밍 - 상속 (0) | 2023.08.15 |
객체 지향 프로그래밍 - 오버로딩(Overloading)과 오버라이딩(Overriding) (0) | 2023.08.06 |
객체 지향 프로그래밍 - 변수와 메서드 (0) | 2023.08.05 |
객체 지향 프로그래밍 - 클래스와 객체 (0) | 2023.08.05 |