※ 오버로딩과 오버라이딩의 차이

오버로딩과 오버라이딩의 용어는 비슷하나 차이는 명백합니다.


  • 오버로딩은 기존에 메소드의 인자를 이용하여 하나의 함수에 여러가지 기능을 만드는 것.
    기존에 int a(int a) 라는 함수와 char a (char a, char b) 라는 함수가 존재한다고 가정한다.
    main()에서 호출시에는 a(10); 이라고 호출하면 전자가 호출이 되고 a('abc', 'def'); 라고
    호출하면 후자가 호출이 된다.
    주로 생성자 메소드를 정의할 때 많이 사용하게 된다. 쉽게 말하자면 함수의 이름은 같으나,
    인자(파라메터)로 구분을 하게 되는것이다.

  • 오버라이딩은 상위클래스에 있는 메소드를 다시 만드는 행위(재정의) 를 의미한다.
    상속의 개념에서 매우 중요한 부분이며, 부모 클래스의 메소드를 자식 클래스에서 완전히 새로
    만드는 것을 의미한다.
비교적 특징
오버로딩
  • 메소드 이름이 같아야 한다.
  • 리턴형이 같아도 되고, 달라도 된다.
  • 파라메터 개수가 같을 경우, 자료형이 달라야 한다
오버라이딩
  • 오버라이드 하고자 하는 메소드의 수가 상위 클래스의 존재해야 한다.
  • 메소드의 이름이 같아야 한다.
  • 메소드의 파라메터 갯수, 자료형이 같아야 한다.
  • 상위 메소드와 동일하거나 더 구체적인 Exception 을 발생시켜야 한다.
  • 상위 메소드와 동일하거나 접근 범위가 더 넓은 접근 제한자를 사용해야 한다.


+ Recent posts