컴퓨터공학 💻 도서관📚
Part2. 2-7 생성자 오버로딩 (with. 파인만 기법 + 문제출제) 본문
✅🌲강의 복습 노트/패캠 JavaSpring 강의,코드 복습
Part2. 2-7 생성자 오버로딩 (with. 파인만 기법 + 문제출제)
들판속초록풀 2024. 3. 4. 19:27생성자 오버로딩 : 여러 가지 생성자를 '같이' 정의하는 것
메서드 오버로딩도 가능하다
public class UserInfo {
public String userId; // 멤버변수: 객체의 특성
public String userPassWord;
public String userName;
public String userAddress;
public String phoneNumber;
// 생성자 오버로딩
public UserInfo(){} // 기본 생성자
public UserInfo(String userId, String userPassWord, String userName) { // 생성자
this.userId = userId;
this.userPassWord = userPassWord;
this.userName = userName;
}
public String showUserInfo() {
return "고객님의 아이디는 " + userId + "이고, 등록된 이름은 " + userName + "입니다.";
}
}
[ 문제 : 여러 가지 생성자를 같이 정의하는 것을 뭐라고 부르는가? ]
응, 자바에서는 둘 다 가능해.
👉 메서드 오버로딩 O / 생성자 오버로딩 O
다만 규칙은 똑같고, 몇 가지 주의점이 있어.
1️⃣ 메서드 오버로딩 (Method Overloading)
같은 이름의 메서드를 여러 개 정의하는 것
✅ 조건
- 메서드 이름 같아야 함
- 매개변수 목록이 달라야 함
- 개수 다름
- 타입 다름
- 순서 다름
❌ 리턴 타입만 다른 건 안 됨
예시
class Calculator {
int add(int a, int b) {
return a + b;
}
double add(double a, double b) {
return a + b;
}
int add(int a, int b, int c) {
return a + b + c;
}
}
2️⃣ 생성자 오버로딩 (Constructor Overloading)
매개변수가 다른 생성자를 여러 개 정의하는 것
예시
class Person {
String name;
int age;
// 기본 생성자
Person() {
this("이름없음", 0);
}
// 생성자 1
Person(String name) {
this(name, 0);
}
// 생성자 2
Person(String name, int age) {
this.name = name;
this.age = age;
}
}
👉 this(...)로 다른 생성자 호출도 가능
⚠️ 단, 생성자 안에서 첫 줄에만 가능
3️⃣ 메서드 vs 생성자 오버로딩 차이
구분메서드 오버로딩생성자 오버로딩
| 이름 | 같음 | 클래스명과 같음 |
| 리턴 타입 | 있음 | 없음 |
| 호출 시점 | 객체 생성 후 | 객체 생성 시 |
| 목적 | 기능 다양화 | 객체 초기화 다양화 |
4️⃣ 헷갈리기 쉬운 포인트 ⚠️
int test(int a) {}
double test(int a) {} // ❌ 컴파일 에러
👉 리턴 타입만 다르면 오버로딩 아님
void test(int a) {}
void test(Integer a) {} // ⭕ 가능 (타입 다름)
✅ 한 줄 요약
- 자바는 메서드 오버로딩 가능
- 자바는 생성자 오버로딩도 가능
- 차이는 매개변수, 리턴 타입은 기준 아님
원하면
👉 오버로딩 vs 오버라이딩 차이
👉 실제 컴파일러가 어떤 메서드를 고르는지(바인딩)
도 같이 설명해줄게.
'✅🌲강의 복습 노트 > 패캠 JavaSpring 강의,코드 복습' 카테고리의 다른 글
| Part2. 2-9 참조 자료형 변수 (참조 변수) (2) | 2024.12.17 |
|---|---|
| Part2. 2-8 객체 구현 복습 (0) | 2024.12.16 |
| Part2. 2-6 생성자 (with. 파인만 기법 + 문제출제) (1) | 2024.02.28 |
| Part2. 2-5 인스턴스 생성과 힙 메모리 (with. 파인만 기법 + 문제출제) (3) | 2024.02.27 |
| Part2. 2-4 객체의 속성은 멤버 변수로, 객체의 기능은 메서드로 구현한다 (0) | 2024.02.27 |
Comments