ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [JAVA] 오버라이딩 (Overriding), 오버로딩 (Overloading) 개념 및 차이점
    Java 2024. 5. 12. 00:22

     

    오버라이딩 (overriding)

    • 부모 클래스로부터 상속받은 메서드를 자식 클래스에서 재정의 하는 것.
    • 상속받은 메서드를 그대로 사용할 수도 있지만. 자식 클래스에서 상황에 맞게 변경해야하는 겅우 오버라이딩할 필요가 생긴다.

    오버라이딩의 조건

    • 부모 클래스의 메서드를 재정의하는 것으로 메소드의 이름이 일치해야 한다.
    • 메소드 매개변수의 개수, 순서 그리고 데이터 타입이 일치해야 한다.
    • 메서드의 return 타입이 일치해야 한다.

    @Override는 어떤 용도인가?

    • 검증하는 기능을 한다.
    • 오버라이딩을 검증하는 기능을 한다.
    • 부무 클래스의 메서드를 오버라이딩 하는 것은 내용만을 새로 정의하는 것이므로 선언부는 부모의 것과 완벽히 동일해야 한다.
    • 부모의 메서드의 이름만 빌려와서 자기의 방식대로 재정의하는것을 오버라이딩이라고 한다.
    • 오버라이딩에서 접근 제어자를 성정하는 규칙이 존재한다.
      1. 자식 클래스에서 오버라이딩하는 메서드의 접근 제어자는 부모 클래스보다 . 더 좁게 생성할 수 없다.
      2. 예외(Exception)는 부모 클래스의 메소드 보다 많이 선언할 수 없다.
      3. static메서드를 인스턴스의 메소드로 또는 그 반대로 바꿀 수 없다.

    오버로딩 (overloading)

    • 같은 클래스 내부에서 메소드를 확장하기 위한 개념이다.
    • 하나의 함수가 하나의 기능만을 구현해야 한다는 것이다.
    • 자바의 한 클래스 내에 이미 사용하려는 이름과 같은 이름을 가진 메서드가 있더라고 매개변수의 개수 또는 타입이 다르면, 같은 이름을 사용해서 메서드를 정의할 수 있다.

    오버로딩의 조건

    • 메서드의 이름을 일치햐야 한다.
    • 메소드 매개변수의 개수 또는 타입이 달라야 한다 (개수가 같다면 타입, 타입이 같다면 개수를 다르게 해야 한다.)

     

    오버로딩을 사용하는 이유

    1. 같은 기능을 하는 메서드를 하나의 이름을 사용할 수 있다.
      • 같은 기능을 가진 메서드를 하나의 이름으로 정의가 가능한 것이다.
    2. 메소드의 이름을 절약할 수 있다.
      • 매개변수의 종류에 따라서 다르게 이름을 지정한다고 하면 수많은 메소드들의 이름을 정의해줘야 할것이다.
      • 이는 프로그래머의 입장에서 메서드의 네이밍메 고민을 가중시킨다 또한, 이런 이름들은 다른 곳에 사용해야 될 수도 있기 때문이다.

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

     

    오버로딩: 기존에 없는 새로운 메소드를 추가하는 것.

    오버라이딩: 상속받은 메소드를 재정의 하는 것.

     

    접근제어자

    • 오버로딩 : 모든 접근 제어자를 사용할 수 있다.
    • 오라이딩 : 부모 클래스의 메소드의 접근 제어자보다 더 넓은 범위의 접근 제어자를 자식 클래스의 메서드에서 설정할 수 있다.

    리턴형

    • 오버로딩 : 달라도 된다.
    • 오버라이딩 : 동일해야 한다.

    메서드명

    • 오버로딩 : 동일해야 한다.
    • 오버라이딩 : 동일해야 한다.

    매개변수

    • 오버로딩 :  달라야만 한다.
    • 오버라이딩 : 동일해야 한다.

    적용범위

    • 오버로딩 : 같은 클래스 내에서 적용된다.
    • 오버라이딩 : 상속관계에서 적용된다.

    Summary

    • 오버라이딩 : 상속받은 메서드를 재정의 하는 것.
    • 오버로딩 : 기존에 없는 새로운 메소드를 추가하는 것.
    • 오버라이딩 : 상속관계에서 적용된다.
    • 오버로딩 : 같은 클래스 내에서 적용된다.

     

     

kimjihoon