개발자 항해

오버로딩과 오버라이딩 차이점 본문

Programming/Java

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

리치Y 2022. 6. 28. 22:48
  • 오버로딩이란?

사전적 의미로는 과적하다, 과중하게 부담시키다의 뜻이있다.

그 말과 비슷하게 같은 이름의 메서드를 서로 다른  작업을 처리하도록 하는것이다. 

오버로딩은 4가지 특징이 있는데 다음과같다.

1) 메서드명은 동일해야한다.

2) 매개변수의 타입이나 갯수는 달라야한다.(순서가 달라도 됨)

3) 리턴타입이 다른것은 오버로딩과 무관하다.

4) 매개변수의 변수명만 다른것은 오버로딩과 무관하며 각각 다른 메서드를 호출하도록

    '구분'되어야 한다.

 

위 예제와 같이 매개변수별로 메서드기능을 달리 구현하고 싶을때 오버로딩을 사용하지 않으면

메서드를 각각 다른이름으로 정의해줘야 한다. 

하지만 오버로딩을 사용하면  run이라는 같은 이름의 메서드로 매개변수만 달리하여 각각 다른 기능을

구현할수 있다. 

 

  • 오버라이딩이란?

override의 사전적 뜻을 찾아보변 기각하다, ~보다 우선하다 라는 뜻이다. 

자바에서 보자면 오버라이딩이란 슈퍼클래스로 부터 상속받은 메서드를 서브클래스에서 새롭게 재정의하는것이다. 

반드시 상속 관계에서 상속받은 메서드에 대해서만 적용 가능하다.

서브 클래스에서 오버라이딩 수행 후에는 슈퍼클래스의 메서드는 은닉된다.

주의)

1) 슈퍼클래스의 메서드와 시그니처(리턴타입, 메서드명, 매개변수)가 동일해야한다.

2) 접근제한자는 범위가 좁아질수 없다.

( 부모가 public 이면 자식도 public만 선택가능하다)

 

 

  • 결론 

오버로딩은 매개변수를 달리하여  같은 이름의 메서드를 여러개 구현하는것

오버라이딩은 슈퍼클래스로부터 '상속'받은 메서드를 새롭게 재정의하여 쓰되 시그니처가 동일해야한다는것