Programming Language/Java

오버라이딩(Overriding) / 오버로딩(Overloading)

DongHo 2023. 5. 17. 02:54

메소드 오버라이딩(Overriding)

- 상위 클래스의 동일한 메소드를 하위 클래스에서 다시 정의(코드를 다시 구현)
    - 메소드 재정의(method redefinition)
    - or 메소드 대체(method replacement)

 

메소드 오버라이딩의 목적

- 상위 클래스에서 이미 정의한 메소드를 다시 수정하지 않고 하위 클래스에서 좀더 보완 수정하거나 완전히 새로운 것으로 대체하기 위한 방법입니다.

 

메소드 오버라이딩 조건

- 메소드의 반환 값과 메소드 이름, 매개변수는 반드시 같아야 합니다.
- 접근 지정자는 하위 클래스의 메소드가 보다 공개적이어야합니다.
    - 상위 클래스의 메소드가 public이면, 오버라이딩되는 메소드는 public만 가능합니다.
    - 상위 클래스의 메소드가 protected이면, 하위 메소드는 public, protected만 가능합니다.
    - 상위 클래스의 메소드가 default이면, 하위 메소드는 public, protected, default만 가능합니다.
- 메소드 수정자가 final, private인 메소드는 오버라이딩 불가합니다.

 

 

메소드 오버로딩(Overloading)

- 클래스 내부에서 인자가 다르나 이름이 같은 메소드가 여러 개 정의됩니다. 반환값은 다를 수 있지만, 인자가 같을 수는 없습니다.

오버로딩의 경우 메소드와 정적 메소드는 무관합니다.
정적 메소드의 오버로딩은 이름이 같고 매개변수(파라미터)가 다르면 가능합니다.

다만, 정적 메소드의 경우 클래스 내부에 소속된 변수들의 접근이 불가합니다.
또한, 정적 메소드 내부에서는 this, super 사용이 불가합니다.

 

 

 

'Programming Language > Java' 카테고리의 다른 글

인터페이스(interface)  (0) 2023.05.17
추상 클래스(Abstract Class)  (0) 2023.05.17
다향성(Polymorphism)  (0) 2023.05.17
상속(Inheritance)  (0) 2023.05.17
클래스(Class) & 객체(Object)  (0) 2023.05.17