new 연산자
- 객체를 생성한 후 생성자를 호출해서 객체를 초기화함
- 객체 초기화 : 필드 초기화를 하거나 메소드를 호출해서 객체를 사용할 준비를 하는 것 - 생성자 실행이 끝나면 new 연산자는 객체의 주소 리턴
- 리턴된 주소는 클래스 변수에 대입되어 객체의 필드나 메소드에 접근할 때 이용
클래스 변수 = new 클래스();
기본 생성자
- 모든 클래스에는 생성자가 존재하며, 하나 이상을 가질 수 있음
- 생성자 선언하지 않아도 컴파일러가 기본 생성자를 바이트 코드 파일에 자동으로 추가시킴
- 명시적으로 선언한 생성자가 있다면 기본 생성자를 추가하지 않음 - 클래스가 public으로 선언되면 기본 생성자에도 public이 붙고 없으면 붙지 않음
public class Car {
public Car() { }
}
생성자 선언
- 객체를 다양하게 초기화 하기 위함
- 메소드와 다르게 리턴 타입이 없고 클래스 이름과 동일함
- 매개변수 : new 연산자고 생성자를 호출할 때 매개값을 생성자 블록 내부로 전달하는 역할
- 전달하는 매개값과 생성자의 매개변수 수가 일치해야 함
클래스 (매개변수, ...) {
//객체의 초기화 코드
}
필드 초기화
- 객체마다 동일한 값을 갖고 있다면 필드 선언 시 초기화 (국가 등)
- 객체마다 다른 값을 갖고 있다면 생성자에서 필드 초기화 (이름, 주민번호 등) - 가독성 확보를 위해 매개변수명과 필드명을 일치 시켜주는 것이 좋음
- 매개변수명이 필드명과 동일하기 때문에 구분하기 위해 this 키워드를 필드명 앞에 붙여줘야함
- this : 현재 객체
- this.name : 현재 객체의 데이터(필드)로서의 name
생성자 오버로딩 (Overloading)
- 매개변수를 달리하는 생성자를 여러 개 선언하는 것
- 매개값으로 객체의 필드를 다양하게 초기화 하기 위함
- 매개변수의 타입, 개수, 순서가 다르게 선언되어야 함
- 생성자가 오버로딩 되어 있을 경우 new 연산자로 생성자를 호출할 때 제공되는 매개값의 타입과 수에 따라 실행될 생성자가 결정됨
public class Car {
Car() {}
Car(String model) {}
Car(String model, String color) {}
Car(String model, int maxspeed) {}
}
다른 생성자 호출
- 셍성자 오버로딩이 많아질 경우 생성자 간 중복된 코드가 발생할 수 있음
- 이럴 경우 공통 코드를 한 생성자에만 집중적으로 적성하고 나머지 생성자는 this( ) 를 사용하여 공통 코드를 가지고 있는 생성자를 호출할 수 있음
- this( )는 반드시 첫 번째 줄에 작성되어야 하고, 호출되는 생성자의 실행이 끝나면 원래 생성자로 돌아와서 다음 실행문 실행
'JAVA > 2. 객체 지향 프로그래밍' 카테고리의 다른 글
[JAVA] 인스턴스 멤버 (0) | 2023.12.02 |
---|---|
[JAVA] 필드 (0) | 2023.11.16 |
[JAVA] 클래스 (0) | 2023.11.16 |
[JAVA] 객체 지향 프로그래밍이란 (0) | 2023.11.16 |
[JAVA] 열거 타입 (Enum) (0) | 2023.11.16 |