생성자(Constructor)
: 클래스가 인스턴스화될 때(실체) 객체를 초기화하는 특별한 메서드로, 초기화 메서드라고 한다
- 생성자는 반환 타입이 없으며, 클래스와 동일한 이름을 가져야한다
class Person {
Person();
}
- 생성자는 객체가 생성될 때만 호출되며, 명시적으로 호출할 수 없다
Person person = new Person();
- 생성자는 클래스에 필수로 존재해야 하지만, 명시적으로 선언하지 않으면 기본 생성자가 자동으로 제공된다
생성자의 종류
1. 기본 생성자(Default Constructor)
명시적으로 생성자를 작성하지 않으면 컴파일러가 자동으로 생성해주는 기본 생성자
기본 생성자는 객체가 생성될 때 모든 필드를 기본값으로 초기화한다
public class Person {
String name;
int age;
// 생성자를 직접 작성하지 않으면 기본적으로 컴파일러가 자동으로 제공
// Person() {}
}
2. 매개변수가 있는 생성자(Parameterized Constructor)
매개변수가 있는 생성자는 객체가 생성될 때 필드를 특정 값으로 초기화하기 위해 사용된다
public class Person {
String name;
int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
}
파라미터를 채워서 new 연산자를 이용
Person person = new Person('짱구', 5);
3. 생성자 오버로딩(Constructor Overloading)
하나의 클래스는 여러개의 생성자를 가질 수 있으며, 이들을 생성자 오버로딩이라고 한다
이는 서로 다른 매개변수 목록을 가지는 여러 생성자를 정의하는 것을 의미한다
매개변수가 다른 다양한 생성자들!
class Person {
String name;
int age;
// 서로 다른 생성자의 오버로딩
// 기본 생성자
public Person() {
this.name = "Unknown";
this.age = 0;
}
// 매개변수 있는 생성자
public Person(String name, int age) {
this.name = name;
this.age = age;
}
}
4. this() 사용
this() 는 같은 클래스 내의 다른 생성자를 호출할 때 사용된다
생성자 안에서 this()를 호출하면 해당 생성자가 호출된다
class Person {
String name;
int age;
// 기본 생성자
public Person() {
// this() 를 통하여 다른 생성자를 호출
this("Unknown", 0);
}
// 매개변수 있는 생성자
public Person(String name, int age) {
this.name = name;
this.age = age;
}
}
5. super() 사용
super() 는 부모클래스의 생성자를 호출할 때 사용된다
이는 상속 구조에서 자식 클래스가 부모 클래스의 생성자를 명시적으로 호출할 수 있게 해준다
(자식이 부모의 변수 사용)
class Person {
String name;
int age;
// 매개변수가 있는 생성자
public Person(String name, int age) {
this.name = name;
this.age = age;
}
}
// 부모를 상속(extends)
class Child extends Person {
String sex;
public Child(String sex) {
super("Child"); // 부모 클래스의 생성자를 호출, 초기화 설정
this.sex = sex;
}
}
'프로그래밍 > JAVA' 카테고리의 다른 글
[JAVA] [](배열)과 List의 차이점 (1) | 2024.10.09 |
---|---|
[JAVA] 소수를 판별하는 메소드 작성하기 (0) | 2024.10.09 |
[JAVA] BufferedReader (0) | 2024.05.31 |
[JAVA] throws IOException 예외 처리 (0) | 2024.05.31 |