Post

⚡ Java - 오버로딩과 오버라이딩의 차이점

⚡ Java - 오버로딩과 오버라이딩의 차이점

🔹 오버로딩과 오버라이딩의 차이점

▫️ 오버로딩(Overloading)

1
2
3
4
5
6
7
8
9
10
11
12
13
public class Calculator {
	public int add(int a, int b) {
		return a + b;
	}
	
	public double add(double a, double b) {
		return a + b;
	}
	
	public int add(int a, int b, int c) {
		return a + b + c;
	}
}
  • 하나의 클래스 내에서 같은 이름의 메서드를 여러 개 정의할 수 있도록 하는 기능
  • 매개변수의 개수, 자료형, 순서 중 하나 이상이 달라야 함
  • 정적 바인딩(컴파일 타임에 결정)

▫️ 오버라이딩(Overriding)

1
2
3
4
5
6
7
8
9
10
11
class Animal {
    public void sound() {
        System.out.println("Some sound");
    }
}

class Dog extends Animal {
    public void sound() {
        System.out.println("Bark");
    }
}
  • 상속 관계에서 부모 클래스의 메서드를 자식 클래스가 재정의하는 것
  • 메서드의 이름, 매개변수, 리턴 타입이 모두 동일해야 함
  • 동적 바인딩(실행 시간에 결정)

▫️ 정리

항목오버로딩오버라이딩
정의 위치같은 클래스 내상속 관계의 다른 클래스
시점컴파일 타임런타임
메서드 시그니처이름은 같지만 매개변수가 다름이름, 매개변수, 리턴 타입 모두 동일
목적편의성 제공 (유연한 호출)부모 클래스의 기능 재정의
애노테이션 사용사용 안 함@Override 필수 권장
This post is licensed under CC BY 4.0 by the author.