개발 기록/OOP
오버로딩, 오버라이딩 (2020.10.23)
시유후
2022. 8. 4. 15:15
목차
이름이 비슷비슷해서 공부할 때는 항상 헷갈렸던, 오버로딩과 오버라이딩을 설명해보겠다.
오버로딩(overloading)
오버로딩은 매개변수의 형식, 개수를 다르게 해서 메서드가 다양한 유형의 요청에 답할 수 있게 하는 것이다.
예를 들어서, 덧셈을 위한 메서드를 만들었다.
public int sum(int A, int B);
이 메서드는 두 정수를 받아서 두 수의 합을 반환하게 되어있다.
그런데 사용자가 3개의 정수의 합을 구하고 싶다고 한다면 어떻게할까?
이런 경우, 아래와 같이 메서드를 새로 하나 더 만들면 된다.
public int sum3(int A, int B, int C);
하지만, 사용자가 다시 실수의 합을 구하는 메서드를 요청한다면?
또 double형식의 함수를 하나 더 만들고,
public double sumF(double A, double B)
사용자가 다시 실수 3개의 합을 구하고 싶다고 하면 또 sumF3의 함수를 만들것인가?
우리는 이 때, 오버로딩을 이용해서 이 모든 함수명을 sum으로 만들 수 있다.
public int sum(int A, int B);
public int sum(int A, int B, int C);
public double sum(double A, double B);
오버라이딩
상속을 받을 때, 부모클래스로부터 받은 메서드를 변형시키거나, 확장시켜서 사용할 때, 메서드를 다시 만들어서 사용할 수 있다.
예로, 비행기 조종사를 하나 만들어보자.
public class pilot{
int career;
public void introduce(){
System.out.println("I'm a pilot");
}
}
하지만 여객기 조종사는 또 다를 것이다.
아래와 같이, 여객기 조종사만의 자기소개를 만들어서 사용할 수 잇다.
public class airlinerPilot extends pilot{
public void introduce(){
System.out.println("I'm an ariliner pilot");
}
}
정리해보자면
| 구분 | 오버로딩 | 오버라이딩 |
|---|---|---|
| 메서드이름 | 같음 | 같음 |
| 반환형식 | 상관X | 같음 |
| 매개변수의 개수, 형식 | 다름 | 같음 |
| 구현부 | 다름 | 다름 |