오버로딩의 조건
- 메서드 이름과 같아야 한다.
- 매개변수의 개수 또는 타입이 달라야 한다.
int add(int a, int b)
int add(int x, int y)
=> 오버로딩 성립 x 매개변수 the same
int add(int a, int b)
int add(int x, int y)
=> 오버로딩 성립 x 매개변수 the same
=> 오버로딩에서 반호나 타입은 전혀 오버로딩에 영향 x
만일 메소드가 변수처럼 이름만으로 구별되면, 매개변수 달라질 때마다 이름 다 달라져야 함 - 그래서 매개변수만 다르더라도 다른 함수로 취급 가능하게 해주는 것
클래스 내에 생성자가 아무도 없을 때
의 경우 뿐이라는 것을 명심*class Data1 {
int value;
}
class Data2 {
int value;
Data2(int x) { // 매개변수가 있는 생성자.
value = x;
}
}
class ConstructorTest {
public static void main(String[] args) {
Data1 d1 = new Data1();
Data2 d2 = new Data2(); // compile error발생
}
}
1) 생성자의 이름으로 클래스 이름 대신 this 사용하기
2) 한 생성자에서 다른 생성자 호출 시 (this(), 혹은 this(매개변수)) 반드시 첫 줄에서만 호출 가능
Car(String color){
x=5;
this(color, "auto", 4)
}
=> 생성자 호출이 첫째줄 아니라서 에러
Car(String color){
Car (color, "auto", 4)
}
=> 생성자 호출을 Car로 해서 에러