목차
이름이 비슷비슷해서 공부할 때는 항상 헷갈렸던, 오버로딩과 오버라이딩을 설명해보겠다.
오버로딩(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 | 같음 |
매개변수의 개수, 형식 | 다름 | 같음 |
구현부 | 다름 | 다름 |
'OOP' 카테고리의 다른 글
추상클래스와 인터페이스 (2021.01.03) (0) | 2022.08.04 |
---|---|
생성자 (2020.11.12) (0) | 2022.08.04 |
상속 (2020.10.17) (0) | 2022.08.04 |
캡슐화 (2020.09.23) (0) | 2022.08.04 |
객체지향이 무엇일까? (2020.09.09) (0) | 2022.08.04 |