JAVA/객체지향 프로그래밍 (OOP) 기초
생성자의 개념 및 오버로딩
DEVLIB
2025. 4. 12. 08:56
728x90
생성자란?
클래스 이름과 동일하며, 객체를 생성할 때 실행되는 메서드
객체의 필드를 초기화하거나 초기 설정을 도와줍니다.
생성자의 기본 특징
항목 | 설명 |
이름 | 클래스 이름과 같아야 함 |
반환 타입 | 없음 (void도 쓰지 않음) |
자동 호출 | new 클래스명() 시 실행됨 |
기본 생성자(Default Constructor)
public class Person {
String name;
public Person() {
System.out.println("기본 생성자 실행됨!");
}
}
매개변수 생성자(Parameter Constructor)
public class Person {
String name;
public Person(String inputName) {
name = inputName;
}
}
Person p = new Person("영희");
생성자 오버로딩이란?
같은 이름의 생성자를 매개변수만 다르게 여러 개 정의하는 것
오버로딩 조건
- 생성자 이름은 같고
- 매개변수의 개수 또는 타입이 달라야 함
생성자 오버로딩 예제
public class Student {
String name;
int age;
// 생성자 1: 기본
public Student() {
this.name = "이름없음";
this.age = 0;
}
// 생성자 2: 이름만 받음
public Student(String name) {
this.name = name;
this.age = 0;
}
// 생성자 3: 이름 + 나이 받음
public Student(String name, int age) {
this.name = name;
this.age = age;
}
void printInfo() {
System.out.println("이름: " + name + ", 나이: " + age);
}
}
Student s1 = new Student();
Student s2 = new Student("철수");
Student s3 = new Student("영희", 20);
출력:
이름: 이름없음, 나이: 0
이름: 철수, 나이: 0
이름: 영희, 나이: 20
this()로 생성자 간 호출
public Student(String name) {
this(name, 0); // 생성자 호출
}
- this()는 생성자 내부에서 다른 생성자 호출
- 반드시 첫 줄에 위치해야 함
생성자 vs 일반 메서드 차이
항목 | 생성자 | 메서드 |
이름 | 클래스명과 같음 | 자유롭게 지정 가능 |
반환 타입 | 없음 | void, int, String 등 |
호출 시점 | 객체 생성 시 자동 호출 | 직접 호출 |
목적 | 필드 초기화, 객체 설정 | 기능 실행 |
실습 아이디어
- Book 클래스 → 생성자 오버로딩: 제목만, 제목+가격, 기본값
- Car 클래스 → this()로 생성자 체인 구성
마무리 요약
개념 | 설명 |
생성자 | 객체 생성 시 자동 실행되는 특별한 메서드 |
기본 생성자 | 매개변수 없음 |
오버로딩 | 개변수 개수/타입 다르게 여러 개 정의 |
this() | 생성자 내부에서 다른 생성자 호출 |
LIST