오버로딩(Overroading)
정의
동일한 메서드 이름을 가지고 매개변수의 타입, 개수, 또는 순서가 다르게 여러 버전의 메서드를 선언하는 것
특징
메서드 이름은 동일하나, 매개변수의 시그니처가 서로 달라야 함
반환 타입은 오버로딩에 영향을 미치지 않음
예시 코드
class Example {
void print(int a) {
System.out.println(a);
}
void print(double b) {
System.out.println(b);
}
}
오버라이딩(Overriding)
정의
부모 클래스에서 이미 정의된 메서드를 자식 클래스에서 동일한 시그니처로 재정의하는 것
특징
메서드 시그니처(이름, 매개변수, 반환 타입)가 부모 클래스와 동일해야 함
부모 클래스에서 상속받은 메서드를 자식 클래스에서 다시 구현함으로써 새로운 동작을 정의할 수 있음
예시 코드
class Animal {
void makeSound() {
System.out.println("Animal makes a sound");
}
}
class Dog extends Animal {
@Override
void makeSound() {
System.out.println("Dog barks");
}
}
오버로딩과 오버라이딩의 차이점
1. 대상
오버로딩 - 같은 클래스 내에서 동일한 메서드 이름을 다양한 매개변수로 정의
오버라이딩 - 부모 클래스에서 상속받은 메서드를 자식 클래스에서 재정의
2. 시그니처
오버로딩 - 매개변수의 타입, 개수, 또는 순서가 달라야 함
오버라이딩 - 메서드 시그니처가 부모 클래스와 동일해야 함
3. 목적
오버로딩 - 다양한 매개변수로 동일한 동작을 수행할 수 있게 함
오버라이딩 - 부모 클래스의 동작을 자식 클래스에서 수정하거나 추가적인 동작을 정의할 수 있게 함
'BACKEND > JAVA' 카테고리의 다른 글
자바 Enum의 특징과 사용법, 그리고 주의 사항을 알아보자 (0) | 2023.12.29 |
---|---|
자바의 원시 타입(Primitive Type) VS 참조 타입 (Reference Type) (0) | 2023.12.18 |
equals()와 hashCode()의 역할 및 오버라이딩 시 주의사항 (0) | 2023.12.12 |