자바의 클래스는 field
와 method
를 가진다
어떤 특정한 작업을 수행하기 위한 명령문의 집합
값이 입력되면 입력된 값으로 작업을 수행하여 결과를 반환 한다
접근제어자 반환타입 메소드이름(매개변수목록) { // 선언부
// 구현부
}
1. 객체참조변수이름.메소드이름(); // 매개변수가 없는 메소드의 호출
2. 객체참조변수이름.메소드이름(인수1, 인수2, ...); // 매개변수가 있는 메소드의 호출
자바에서는 객체의 생성과 동시에 인스턴스 변수를 원하는 값으로 초기화할 수 있는 생성자(constructor)라는 메소드를 제공한다. 생성자는 인스턴스 변수의 초기화 작업에 주로 사용되며, 인스턴스 생성시에 실행되어야 하는 작업을 위해서도 사용된다
- 인스턴스 초기화 란? 인스턴스 변수들을 초기화 하는것을 뜻한다
- 인스턴스 란? 일반적으로 실행 중인 임의의 프로세스, 클래스의 현재 생성된 오브젝트를 가리킨다
void
를 붙여 사용해야 하지만 모든 생성자가 리턴값이 없으므로 void
를 생략 할 수 있다1. 클래스이름() { ... } // 매개변수가 없는 생성자 선언
2. 클래스이름(인수1, 인수2, ...) { ... } // 매개변수가 있는 생성자 선언
위와 같이 생성자 중에는 매개변수를 전달받아 인스턴스 변수를 초기화하는 생성자도 선언할 수 있다
자바의 모든 클래스에는 하나 이상의 생성자가 정의되어 있어야 한다.
하지만 생성자를 정의하지 않고도 인스턴스를 생성할 수 있는데, 그 이유는 자바 컴파일러가 기본 생성자(default constructor)라는 것을 기본적으로 제공해 주기 때문이다
자바 컴파일러는 컴파일 시 클래스에 생성자가 하나도 정의되어 있지 않으면,
자동으로 다음과 같은 기본 생성자를 추가한다
클래스이름() {}
위와 같은 형태의 기본 생성자는 어떠한 매개변수도 전달받지 않으며, 아무런 명령어도 포함하고 있지 않으며 어떤 동작도 하지 않는다.
하지만 만약 매개변수를 가지는 생성자를 하나라도 정의했다면, 기본 생성자는 자동으로 추가되지 않는다
👉 따라서 매개변수를 가지는 생성자를 하나 이상 정의한 후 기본 생성자를 호출하면, 오류가 발생한다
매개변수를 가지는 생성자 하나를 정의한 경우 자동으로 생성되었던 기본 생성자가 사라지기 때문에 추가로 기본 생성자를 정의해주어야 한다