한 클래스 내에 같은 이름을 가진 메소드가 있더라도 매개변수의 개수 또는 타입이 다르면,
같은 이름을 사용해서 메소드를 정의할 수 있다.
동일한 기능을 하는 메서드를 하나의 이름으로 처리할 수 있다는 장점이 있다.
오버로딩 사용 조건 (둘 중 하나이상 충족 시)
- 매개변수 타입이 달라야 한다.
- 매개변수 개수가 달라야 한다.
- 리턴값만을 다르게 갖는 오버로딩은 작성 할 수 없다.
오버로딩 예시
class Mcdonald {
void order() { //매개변수가 없는 경우
System.out.println("주문이 없습니다.");
}
void order(String burger) { //매개변수가 하나 있는 경우
System.out.println("주문하신 "+ burger + "가 나왔습니다.");
}
void order(String burger, int price) { //매개변수가 두 개 있는 경우
System.out.println("주문하신 " + burger + "의 가격은 " + price + "입니다.");
}
}
public class OverloadingTest {
public static void main(String[] args) {
//객체 생성
Mcdonald mcdonald = new Mcdonald();
//메소드 호출
mcdonald.order();
mcdonald.order("빅맥");
mcdonald.order("빅맥", 7000);
}
}
결과
주문이 없습니다.
주문하신 빅맥가 나왔습니다.
주문하신 빅맥의 가격은 7000입니다.
상위 클래스로부터 상속받은 메서드의 내용을 변경(재 정의)하여 사용하는 것이다.
자식클래스가 부모클래스의 메서드를 상속 받아도 다른 기능을 사용하고자 하는 경우에 사용.
오버로딩 사용 조건
- 매개변수가 같아야 한다.
- 리턴타입이 같아야 한다.
오버라이딩 예시
class Person {
void hello() {
System.out.println("안녕하세요.");
}
}
class Student extends Person {
@Override
void hello() {
System.out.println("안녕하세요. 학생입니다.");
}
}
public class OverridingTest {
public static void main(String[] args) {
Person person = new Person();
Student student = new Student();
person.hello();
student.hello();
}
}
결과
안녕하세요.
안녕하세요. 학생입니다.
🙇 참고 사이트 🙇
https://bangu4.tistory.com/30 https://gguljaem.tistory.com/entry/%EC%98%A4%EB%B2%84%EB%A1%9C%EB%94%A9Overloading%EA%B3%BC-%EC%98%A4%EB%B2%84%EB%9D%BC%EC%9D%B4%EB%94%A9overriding-%EC%B0%A8%EC%9D%B4