-
[JAVA] 오버라이딩 (Overriding), 오버로딩 (Overloading) 개념 및 차이점Java 2024. 5. 12. 00:22
오버라이딩 (overriding)
- 부모 클래스로부터 상속받은 메서드를 자식 클래스에서 재정의 하는 것.
- 상속받은 메서드를 그대로 사용할 수도 있지만. 자식 클래스에서 상황에 맞게 변경해야하는 겅우 오버라이딩할 필요가 생긴다.
오버라이딩의 조건
- 부모 클래스의 메서드를 재정의하는 것으로 메소드의 이름이 일치해야 한다.
- 메소드 매개변수의 개수, 순서 그리고 데이터 타입이 일치해야 한다.
- 메서드의 return 타입이 일치해야 한다.
@Override는 어떤 용도인가?
- 검증하는 기능을 한다.
- 오버라이딩을 검증하는 기능을 한다.
- 부무 클래스의 메서드를 오버라이딩 하는 것은 내용만을 새로 정의하는 것이므로 선언부는 부모의 것과 완벽히 동일해야 한다.
- 부모의 메서드의 이름만 빌려와서 자기의 방식대로 재정의하는것을 오버라이딩이라고 한다.
- 오버라이딩에서 접근 제어자를 성정하는 규칙이 존재한다.
- 자식 클래스에서 오버라이딩하는 메서드의 접근 제어자는 부모 클래스보다 . 더 좁게 생성할 수 없다.
- 예외(Exception)는 부모 클래스의 메소드 보다 많이 선언할 수 없다.
- static메서드를 인스턴스의 메소드로 또는 그 반대로 바꿀 수 없다.
오버로딩 (overloading)
- 같은 클래스 내부에서 메소드를 확장하기 위한 개념이다.
- 하나의 함수가 하나의 기능만을 구현해야 한다는 것이다.
- 자바의 한 클래스 내에 이미 사용하려는 이름과 같은 이름을 가진 메서드가 있더라고 매개변수의 개수 또는 타입이 다르면, 같은 이름을 사용해서 메서드를 정의할 수 있다.
오버로딩의 조건
- 메서드의 이름을 일치햐야 한다.
- 메소드 매개변수의 개수 또는 타입이 달라야 한다 (개수가 같다면 타입, 타입이 같다면 개수를 다르게 해야 한다.)
오버로딩을 사용하는 이유
- 같은 기능을 하는 메서드를 하나의 이름을 사용할 수 있다.
- 같은 기능을 가진 메서드를 하나의 이름으로 정의가 가능한 것이다.
- 메소드의 이름을 절약할 수 있다.
- 매개변수의 종류에 따라서 다르게 이름을 지정한다고 하면 수많은 메소드들의 이름을 정의해줘야 할것이다.
- 이는 프로그래머의 입장에서 메서드의 네이밍메 고민을 가중시킨다 또한, 이런 이름들은 다른 곳에 사용해야 될 수도 있기 때문이다.
오버로딩과 오버라이딩의 차이점
오버로딩: 기존에 없는 새로운 메소드를 추가하는 것.
오버라이딩: 상속받은 메소드를 재정의 하는 것.
접근제어자
- 오버로딩 : 모든 접근 제어자를 사용할 수 있다.
- 오라이딩 : 부모 클래스의 메소드의 접근 제어자보다 더 넓은 범위의 접근 제어자를 자식 클래스의 메서드에서 설정할 수 있다.
리턴형
- 오버로딩 : 달라도 된다.
- 오버라이딩 : 동일해야 한다.
메서드명
- 오버로딩 : 동일해야 한다.
- 오버라이딩 : 동일해야 한다.
매개변수
- 오버로딩 : 달라야만 한다.
- 오버라이딩 : 동일해야 한다.
적용범위
- 오버로딩 : 같은 클래스 내에서 적용된다.
- 오버라이딩 : 상속관계에서 적용된다.
Summary
- 오버라이딩 : 상속받은 메서드를 재정의 하는 것.
- 오버로딩 : 기존에 없는 새로운 메소드를 추가하는 것.
- 오버라이딩 : 상속관계에서 적용된다.
- 오버로딩 : 같은 클래스 내에서 적용된다.
'Java' 카테고리의 다른 글
[JAVA] 생성자, Getter&Setter, Builder (0) 2024.05.16 [JAVA] Wrapper Class (래퍼 클래스) (0) 2024.05.13 [JAVA] 컬렉션 프레임워크 (Collection Framework) (0) 2024.05.12 [JAVA] 추상 클래스와 인터페이스의 개념 및 차이 (0) 2024.05.08 [JAVA] 클래스, 객체, 인스턴스의 개념 및 차이점 (0) 2024.05.03