동일한 이름의 메소드를 여러 개 정의하는 것을 의미한다.
매개변수 개수나 type이 조금씩 다르지만, 비슷한 기능을 하는 메소드가 여러개 존재할 수 있는데, 이러한 메소드가 여러개 존재한다면 명확한 구분 및 사용이 어려울 수 있다.
public calss Car{
public int plus(int x, int y){
return x + y;
}
public int plus(int x, int y, int z){
return x + y + z;
}
}
이와 같이 동일 이름으로 메소드를 여러개 정의할 수 있다.
이 과정을 메소드 오버로딩이라 일컫는다.
메소드와 마찬가지로, 동일한 이름의 생성자를 여러개 생성하는 것을 생성자 오버로딩이라 한다.
public class Car{
public int Car(int number){
return number;
}
public void Car(){
}
}
위 기본생성자를 활용하는 경우에도, 내부적으로 field 설정을 할 수 있다.
public class Car{
int number;
String name;
public Car(){
this.name = "Hello";
this.number = 0;
}
}
※ this는 자신의 객체를 명확히 가르키는데 혹은 불러올때(호출할때) 활용하며, 이를 사용하여 위 코드를 고친다면 아래와 같다.
public class Car(){
int number;
String name;
public Car(){
this("Hello", 0);
} //기본 생성자 내에서 오버로딩한 생성자를 다시 호출하게 됨
public Car(String name, int number){
this.number = number;
this.name = name;
}
}