1일 1개념정리 24.08.09.금 ~
큰 결정에 큰 동기가 따르지 않을 때도 있다. 하지만 큰 결심이 따라야 이뤄낼 수 있다.
무조건 무조건 1일 1개의 개념 정리하기 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!
#17. 오버라이딩 vs 오버로딩
이름은 비슷하지만 전혀 다른 이 둘 !!!! Java를 처음 보면 좀 헷갈리는 개념인데, 한번 정리해보자 !!
오버라이딩 OverRiding
- 상속시 부모 클래스의 메소드를 재정의하는 것을 의미함.
- 오버라이딩된 메소드는 부모 클래스의 메소드와 동일한 이름, 동일한 파라미터를 가져야 함. (동일한 시그니처)
- 이를 통해 자식 클래스는 부모 클래스의 메소드를 필요에 맞게 수정할 수 있다.
class Parent {
void showMessage() {
System.out.println("Parent message");
}
}
class Child extends Parent {
@Override
void showMessage() { // 동일한 이름과 동일한 파라미터 가져야함
System.out.println("Child message");
}
}
오버로딩 OverLoading
- 동일한 클래스 내에서 동일한 이름의 메소드를 여러 개 정의하는 것을 의미함.
- 각 메소드는 서로 다른 파라미터를 가져야함. (개수, 순서, 타입)
- 이를 통해 같은 기능을 하는 메소드에 다양한 입력을 처리할 수 있는 유연성을 제공한다.
class Calculator {
int add(int a, int b) { // 정수 두개 더하기
return a + b;
}
double add(double a, double b) { // 실수 두개 더하기
return a + b;
}
int add(int a, int b, int c) { // 정수 세개 더하기
return a + b + c;
}
}
비교
1. 오버라이딩
- 상속 관계에서 발생. 부모 클래스의 메소드를 자식 클래스에서 재정의함
- 메소드 시그니처가 동일 => 메소드 이름, 파라미터 타입, 개수 등이 같아야함.
2. 오버로딩
- 동일한 클래스 내에서 발생. 같은 기능을 수행하지만 다른 형태의 입력을 처리.
- 메소드 이름은 동일하지만 파라미터 목록이 다름.
추가정보
- 다형성 : 오버라이딩을 포함하는 개념으로, 같은 이름의 메소드가 여러 클래스에서 다른 동작을 하게 만드는 것을 의미.
- 추상 메소드 : 부모 클래스에 선언되지만 하위 클래스에서 반드시 구현해야 하는 메소드로, 오버라이딩을 강제한다.
억지로 외우기 TIP
1. 오버라이딩
라이딩 = 자전거 타기. 부모님이랑 같이 자전거 탐.
- 부모님이 자전거 타는데 리듬타면서 슉 슈슉 슉 슈슉 이렇게 페달을 밟음.
- 나는 슉슉 슈슈슉 슉슉 슈슈슉 이렇게 페달 밟음.
- 페달을 밟는 메소드를 자식 클래스에서 재정의하여 슉슉 슈슈슉 하면서 가고있음.
→ 즉, 오버라이딩은 부모가 했던 것을 내가 다른 스타일로 재정의한 것임.
2. 오버로딩
로딩 = 트럭에 짐을 싣는 것 (로드)
- 같은 트럭에 큰 상자, 작은 상자, 중간 상자 등 다양한 크기의 짐을 싣는중.
- 클래스 : 트럭 , 메소드 : 상자
- 서로 다른 메소드지만 같은 클래스에 넣을 수 있음. 근데 상자라는 특징은(메소드 이름) 똑같음.
→ 즉, 같은 클래스(트럭)에 상자(메소드)를 싣는데, 서로 크기가(서로 다른 기능의 메소드들) 다를 수 있음.
'1일 1개념정리 (24년 8월~) > Java' 카테고리의 다른 글
1일1개 (19) - static (0) | 2024.08.28 |
---|---|
1일1개 (18) - 상속과 구현 (0) | 2024.08.27 |
1일1개 (16) - 자바 final (0) | 2024.08.25 |
1일1개 (5) - 인터페이스 (2) | 2024.08.13 |
1일1개 (4) - JVM (2) | 2024.08.12 |