오버라이딩(OverRiding)과 오버로딩(OverLoading)
오버라이딩과 오버로딩은 공부를 하다보면 한 번씩은 들어봤을 개념입니다. 하지만 대충 '메서드 동작을 관리하는 개념이다.'라는 것까진 알아도 정확히 뭐가 어떻게 다른지는 모를 수 있습니다. 단어가 비슷해서 더 헷갈릴 수 있습니다. 그래서 오늘은 목적도 기능도 다른 이 두 단어의 혼동을 바로잡고 갈려고 합니다.
오버라이딩이란
오버라이딩은 부모 클래스에서 정의된 메서드를 자식 클래스에서 같은 이름, 파라미터, 리턴 타입을 가지면서 내용만 다르게 재정의하는 프로그래밍 기법입니다. 이를 통해 자식 클래스는 상속받은 메서드를 자신의 상황에 맞게 사용할 수 있습니다.
오버라이딩의 조건
1. 메서드의 이름이 부모 클래스에서 사용된 것과 동일해야 합니다.
2. 메서드의 파라미터와 리턴 타입이 부모 클래스의 메서드와 정확히 일치해야 합니다.
3. 접근 제어자는 부모 클래스의 메서드와 같거나 더 넓은 범위로 설정될 수 있습니다.
오버라이딩 예제
//오버라이딩 예제
//Opertaion 클래스가 Sum 클래스로 확장됨
class Operation {
void calculation() {
System.out.println("This operation calculates.");
}
}
class Sum extends Operation {
@Override
void calculation() {
System.out.println("This operation performs addition.");
}
}
오버로딩이란
오버로딩은 동일한 이름의 메서드를 여러 개 정의하지만, 파라미터의 수나 타입, 리턴 타입을 다르게 하여 각기 다른 상황에서 사용할 수 있도록 하는 기법입니다.
오버로딩의 조건
1. 메서드의 이름이 동일해야 합니다.
2. 파라미터의 수, 타입 또는 순서가 달라야 합니다.
3. 리턴 타입은 오버로딩을 구분하는 데 사용되지 않습니다.
오버로딩 예제
//오버로딩 예제
//같은 메서드 이름을 갖지만 매개변수 개수 및 유형이 다름
class Calculator {
// 정수 더하기
int add(int a, int b) {
return a + b;
}
// 세 정수 더하기
int add(int a, int b, int c) {
return a + b + c;
}
// 실수 더하기
double add(double a, double b) {
return a + b;
}
}
결론
오버라이딩과 오버로딩의 주된 차이는 다음과 같습니다:
오버라이딩은 부모 클래스의 메서드를 자식 클래스가 재정의하는 것이며 상속 관계에서만 발생합니다.
오버로딩은 같은 클래스 내에서 같은 이름의 메서드를 파라미터를 달리하여 여러 번 정의하는 것이며 상속과 무관합니다.
오버라이딩과 오버로딩의 차이를 이해하는 것은 객체 지향 프로그래밍에서 클래스 간의 상호작용 및 다형성 제어에 중요한 역할을 합니다.
따라서 정확히 모르는 내용은 대충 넘기기 보단 의미를 정확히 파악하고 어떤식으로 활용하는지 학습하는 것이 중요합니다.
'📚 Stack > Java' 카테고리의 다른 글
[JAVA] 자바 배열 문자열 비교 (0) | 2024.05.11 |
---|---|
[JAVA] BFS(너비 우선 탐색) VS DFS(깊이 우선 탐색) (0) | 2024.05.08 |
[JAVA] 자바 8버전 주요 문법 (0) | 2024.04.22 |
[JAVA] 배열에서 특정 값의 위치 찾기 (코드 포함) (0) | 2024.04.15 |
[JAVA] 자바에서 자주 사용하는 메서드 알아보기 (0) | 2024.04.14 |
댓글