일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- docker
- ci/cd
- 데이터내보내기
- 도커이미지
- 르세라핌
- 명령어
- 11월순위
- spring
- analytics4
- JPA
- bigquery
- git pat
- JPQL
- 오블완
- ANTIFRAGILE
- codeium
- 컬렉션프레임워크
- docker 명령어
- gtihub
- IntelliJ
- git branch 삭제
- Python
- 애널리틱스4
- DBMS
- java
- datagrip
- 티스토리챌린지
- pat발급
- db종류
- Today
- Total
hanker
JAVA - JAVA에서 메서드 오버로딩과 오버라이딩의 차이점은 무엇일까? 본문
메서드 오버로딩과 오버라이딩
메서드 오버로딩(Method Overloading)과 메서드 오버라이딩(Method Overriding)은 둘 다 자바에서 메서드를 재정의하는 방식이지만, 사용 목적과 방식이 다르다.
자세하게 알아보자
1. 메서드 오버로딩 (Method Overloading)
정의
같은 이름을 가진 메서드를 여러 개 정의하는 것으로, 매개변수의 타입, 개수, 순서가 다르게 하여 구분한다.
특징
- 같은 클래스 내에서 사용
- 메서드 이름은 같지만, 매개변수 목록이 다르다.
- 반환 타입은 오버로딩의 기준이 되지 않는다. 즉, 반환 타입만 다르고 매개변수가 동일한 경우 오버로딩이 성립하지 않는다.
사용목적
오버라이딩과 같은 기능을 하지만, 다양한 매개변수를 받을 수 있도록 하여 코드의 가독성과 유지보수성을 높인다.
예제
public class OverloadingExample {
public void print() {
System.out.println("매개변수 없음");
}
public void print(String name) {
System.out.println("이름: " + name);
}
public void print(int number) {
System.out.println("숫자: " + number);
}
public void print(String name, int number) {
System.out.println("이름과 숫자: " + name + ", " + number);
}
public static void main(String[] args) {
OverloadingExample example = new OverloadingExample();
example.print();
example.print("hanker");
example.print(10);
example.print("hanker", 20);
}
}
2. 메서드 오버라이딩(Method Overriding)
정의
부모 클래스에서 상속받은 메서드를 자식 클래스에서 재정의하는 것이다.
특징
- 상속 관계에서 사용된다.
- 부모 클래스의 메서드와 메서드 이름, 매개변수 목록, 반환 타입이 모두 동일해야 한다.
- 오버라이딩을 통해 부모 클래스의 메서드를 재정의함으로써 자식 클래스에 맞는 기능을 구현할 수 있다.
- @Override 어노테이션을 사용하여 오버라이딩된 메서드임을 명시적으로 표시한다.
사용목적
상속받은 메서드를 자식 클래스에서 다르게 동작하도록 변경하고자 할 때 사용한다.
예제
class Rangking {
void getRanking() {
System.out.println("당신의 순위는 ? ");
}
}
class Name extends Rangking {
void getRanking() {
System.out.println("1위");
}
}
public class OverridingExample {
public static void main(String[] args) {
Name myRanking = new Name();
myRanking.getRanking();
}
}
* 상속받은 메서드를 자식 클래스에서 다르게 동작하도록 변경
정리
특징 | 오버로딩(Overloading) | 오버라이딩(Overriding) |
목적 | 같은 이름의 메서드를 다양한 방식으로 사용 | 상속받은 메서드의 동작을 변경 |
클래스 관계 | 같은 클래스 내 | 부모-자식 클래스 간 |
메서드 시그니처 | 메서드 이름 동일, 매개변수 목록 다름 | 메서드 이름, 매개변수, 반환 타입 모두 동일 |
어노테이션 사용 | 필요 없음 | 일반적으로 @Override 사용 |
오버로딩은 주로 편리한 사용을 위해 같은 메서드 이름을 여러 방식으로 정의하는 것이고,
오버라이딩은 상속을 통해 다형성을 구현하고 기존 동작을 수정하는 데 사용한다.
'JAVA' 카테고리의 다른 글
JAVA - JAVA에서 컬렉션 프레임워크란 무엇일까? (0) | 2024.11.28 |
---|---|
Java - 문자열 내 Tab 문자 지우기 (0) | 2024.11.25 |
JAVA - JAVA에서 인터페이스와 추상 클래스의 차이점은 무엇일까? (0) | 2024.11.25 |
JAVA - JDK, JRE, JVM의 차이점은 무엇일까? (0) | 2024.11.24 |
JAVA - 자바의 주요 특징은 무엇일까? (0) | 2024.11.23 |