티스토리 뷰
포스팅에 앞서 내용이 틀릴 수 있습니다.
해당 부분 지적 감사히 받습니다.
자바를 공부하다보면 누구나 반드시 이부분에서 멈칫하게 된다
이름이 비슷한 두가지 단어에서 차이점을 알기 위해 한번쯤은 찾게되는 부분이다
각 단어의 사전적 정의부터 알아보자
오버로딩 : 한개의 Class 내에서 같은 이름을 가진 메소드가 2개 이상 존재
오버라이딩 : 부모 Class를 상속받은 자식 Class에서 부모 Class의 메소드를 재정의 하는 것.
이렇게만 보면 차이가 무엇인지 알기 힘들다.
조금 더 상세히 알아보자.
오버로딩 : 함수를 구현할 때 매개변수의 타입, 갯수가 달라야한다. 다만 리턴값/접근제어자만 다른 오버로딩은 구현할 수 없다.
오버라이딩 : 부모Class의 메소드와 이름, 매개변수, 리턴형이 반드시 동일해야 한다.
표를통해 간략히 보자.
구분 | 오버로딩 (Overloading) | 오버라이딩(Overriding) |
접근 제어자 | 모든 접근 제어자를 사용할 수 있다. | 부모 클래스의 메소드의 접근 제어자보다 더 넓은 범위의 접근 제어자를 자식 클래스의 메소드에서 설정할 수 있다. |
리턴형 | 달라도 된다 | 동일해야 한다 |
메소드명 | 동일해야 한다 | 동일해야 한다 |
매개변수 | 달라야만 한다(수/ 타입) | 동일해야 한다 |
적용 범위 | 같은 클래스 내에서 적용된다. | 상속관계에서 적용된다. |
이처럼 오버로딩, 오버라이딩은 이름만 비슷할 뿐, 완전히 다른 개념이다.
아래 코드 예시또한 참고해보자.
class cal{
public int sum(int a1, int a2){
return a1+a2;
}
public int sum(int a1, int a2, int a3){
return a1+a2+a3;
}
}
class cal3 extends cal{
public int sum(int a1, int a2){
return a1-a2;
}
}
public class test {
public static void main(String[] args) {
cal c = new cal();
System.out.println(c.sum(2,1)); // 오버라이딩
System.out.println(c.sum(2,1,3)); // 오버로딩
cal3 c3 = new cal3();
System.out.println(c3.sum(2,1)); // 오버라이딩
}
}
'기술스택 > 자바(Spring)' 카테고리의 다른 글
자바 클래스(static)와 인스턴스(non-static) 접근 가능 방향 (1) | 2025.02.05 |
---|---|
자바 Scanner의 고질병 (2) | 2025.02.04 |
자바 Static 정적 메모리 (5) | 2025.02.02 |
자바 생성자 Constructor (0) | 2025.02.02 |
자바 상속 Inheritance (0) | 2025.02.02 |
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- samron3
- extends
- 상속
- 상품을 구매한 회원 비율 구하기 파이썬
- 김영한 실전 자바 기본
- los 15단계
- lord of sql
- java
- 스프링
- 프로그래머스 상품을 구매한 회원 비율 구하기
- samron
- 김영한
- 김영한 실전 자바 중급
- webhacking.kr
- 김영한 실전 자바 기초
- 코딩테스트 준비
- 자바
- los 15
- 프로그래머스 상품을 구매한 회원 비율 구하기 파이썬
- static
- 백준 피보나치 수열
- 백준 피보나치
- 프로그래머스
- 코딩테스트
- 기술스택
- ys.k
- spring
- Los
- 백준
- zixem
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
글 보관함
250x250