개발 하나둘셋/Java & Spring
오버로딩과 오버라이딩
유리코딩
2021. 11. 26. 18:22
반응형
개념정리
오버로딩과 오버라이딩
오버로딩(Overloading)
- 두 메서드가 같은 이름을 갖고 있으나 인자의 수나 자료형이 다른 경우
- 같은 이름의 함수(메서드)를 여러개 정의하고, 매개변수의 유형과 개수를 다르게 하여 다양한 유형의 호출에 응답할 수 있음.
예제 코드

출력

오버라이딩(Overriding)
- 상위 클래스의 메서드와 이름과 용례(signature)가 같은 함수를 하위 클래스에 재정의하여 사용하는 것
- 상속 관계에 있는 클래스 간에 같은 이름의 메서드를 정의
- 메서드의 이름, 매개변수, 반환형이 같을 경우 상속받은 메서드를사용
예제 코드

출력

오버로딩과 오버라이딩의 성립조건
| 구분 | 오버로딩 | 오버라이딩 |
| 메서드 이름 | 같음 | 같음 |
| 매개변수, 타입 | 다름 | 같음 |
| 리턴타입 | 상관없음 | 같음 |
오버로딩과 오버라이딩을 사용하는 이유
- 오버로딩과 오버라이딩은 클래스의 다형성을 지원하는 방법
- 오버로딩이 지원되지 않으면 매개변수의 타입이나 개수가 다른 메소드를 여러개 만들어줘야 하는 단점이 있음
- 자바에서는 메소드의 이름이 같고 매개변수를 다른 메소드를 만들어 다형성을 지원함
- 여기서 오버로딩은 리턴타입은 전혀 영향을 주지 않고, 매개변수의 타입과 개수에만 영향을 받음
- 오버라이딩은 상속받은 클래스의 메소드가 하위 클래스에서 충분한 기능을 제공하지 않거나, 부족할 때 상위 클래스로부터 상속받은 클래스를 재정의 하기 때문
반응형