본문 바로가기
Web Programing/JAVA

오버로딩과 오버라이딩 차이 쉽게 이해하기

by 기록하는 초보 2024. 2. 23.
반응형

자바 개발자로 취업을 준비한다면 오버라이딩과 오버로딩에 대해서 꼭 알고 있을 것이다. 그만큼 면접 단골 문제 중 하나로 알려져 있는데 이번 글에서는 코드의 다형성을 보여주는 오버라이딩과 오버로딩의 개념과 쉽게 이해해 보기 위해서 알아보겠습니다.

 

오버로딩(Overloading)의 개념

오버로딩은 같은 이름을 가진 메서드를 여러 개 정의하는 것인데, 이때 각 메서드는 매개변수의 타입이나 개수가 달라야 합니다. 즉, 유사한 작업을 수행하는 메서드를 있을 때 각각의 시그니처(메서드 이름과 매개변수)를 다르게 해주는 기법입니다. 오버로딩의 특징은 다음과 같습니다.

1.  매소드의 이름이 같아야 합니다.

2. 매개변수의 개수나 타입이 달라야 합니다.

3. 리턴 타입은 오버로딩의 조건에 포함되지 않습니다.

public class Cal{
	//Overloading 이름이 같은 메소드, 매개변수의 타입이나 개수가 다름
	public int add(int a, int b){
		return a + b;
	}
    
	public int add(double a, double b){
		return a + b;
	}
    
	public int add(int a, int b, int c){
		return a + b + c;
	}
}

 

오버라이딩(Overriding)의 개념

상속 관계에 있는 자식 클래스(Sub Class)가 부모 클래스(Super Class)로부터 물려받은 메서드를 재정의하는 것입니다. 이를 통해 부모클래스의 메서드를 자식클래스가 자신의 상황에 맞게 새롭게 구현할 수 있습니다. 오버라이딩의 조건은 다음과 같습니다.

1. 부모클래스의 메소드와 동일한 시그니처(이름, 매개변수의 타입 및 개수)를 가져야 합니다.

2. 오버라이딩하는 메소드는 부모클래스의 메서드보다 접근성이 좁아질 수 없습니다.

//부모클래스(SuperClass)
class Cal{
	public void println(){
		System.out.println("오늘 입니다.");
	}
}

//자식클래스(SubClass)
class Day extends Cal{
	//부모클래스의 메소드를 재정의
	public void println(){
		System.out.println("1일 입니다.");
	}
}

 

오버로딩과 오버라이딩은 프로그램을 훨씬 더 유연하고 확장성 있게 만들어주며, 특히 다형성을 구현할 때 매우 중요한 역할을 합니다. 오버로딩은 다양한 매개변수를 가진 동일한 작업들을 수행하는 메서드들에 사용되며, 오버라이딩은 산속의 개념을 활용하여 상위 클래스의 기능을 하위 클래스가 재정의하여 사용할 때 사용됩니다.

반응형