📝느낀 점
오버로딩과 오버라이딩은 중요한 것이기 때문에, 한번 정리하고 싶기에 이렇게 작성한다. 오버로딩은 같은 이름의 메소드를 작성 하는데 매개변수, 매개변수 수가 다른 경우, 오버라이딩은 상속 받은 메소드를 재정의하고 싶을때이다. 그리고 하나 알아둬야 할것은 상속 받은 메서드를 오버라이딩 할 시, 스태틱 관련 오버라이딩을 할 경우 상위 클래스의 메서드가 하이딩처리 된다는 것이다. static 메서드에 @Override를 달면 컴파일 에러가 발생한다는 것 도 알고 있자.
오버로딩 정의
자바의 한 클래스 내에 이미 사용하려는 이름과 같은 이름을 가진 메소드가 있더라도 매개변수의 개수
또는 타입이 다르면, 같은 이름을 사용해서 메소드를 정의할 수 있다.
오버로딩의 조건
메소드의 이름이 같고, 매개변수의 개수나 타입이 달라야 한다.
주의할 점은 '리턴 값만' 다른 것은 오버로딩을 할 수 없다는 것이다.
-- 또한 --
각 메소드의 접근 제어자를
public, default, protected, private으로 다르게 지정해줘도 상관없다는 것이다.
접근 제어자만 다르게한다고 오버로딩이 가능하지 않다.
오버로딩을 사용하는 이유
- 같은 기능을 하는 메소드를 하나의 이름으로 사용할 수 있다.
- 대표적인 예로는, println() 메소드이다.
- 메소드의 이름을 절약할 수 있다.
- println() 메소드를 생각해보면, printlnInt, printlnDouble, printlnBoolean 등프로그래머의 입장에서는 메소드의 네 이밍에 고민을 가중시킨다.
- 수많은 메소드들의 이름을 정해줘야 할 것이다.
오버라이딩 정의
부모 클래스로부터 상속받은 메소드를 자식 클래스에서 재정의하는 것을 오버라이딩이라고 한다.
상속받은 메소드를 그대로 사용할 수도 있지만, 자식 클래스에서 상황에 맞게 변경해야하는 경우
오버라이딩할 필요가 생긴다.
오버라이딩의 조건
오버라이딩은 부모 클래스의 메소드를 재정의하는 것이므로, 자식 클래스에서는 오버라이딩 하고자 하는
메소드의 이름, 매개변수, 리턴 값이 모두 같아야 한다.
오버라이딩을 사용하는 이유
- 코드 유지 관리
- 오버라이딩은 코드를 더 모듈화하고 유지 관리하기 쉽게 만듭니다.
- 기반 클래스 수정 없이 동작 변경
- 서브 클래스에서 슈퍼 클래스의 메서드를 오버라이딩하면 슈퍼 클래스의 동작을 변경하거나 보완할 수 있습니다.
- 다양한 동작 구현
- 오버라이딩을 통해 서로 다른 서브 클래스가 같은 메서드 각자의 방식으로 구현할 수 있습니다.
정리
오버로딩 - 기존에 없는 새로운 메소드를 추가하는 것
오버라이딩 - 상속받은 메소드를 재정의 하는 것
Reference :
'Java' 카테고리의 다른 글
박싱(boxing), 언박싱(un-boxing) (0) | 2023.11.06 |
---|---|
추상클래스와 인터페이스의 용도를 나눈 이유는 무엇인가요? (0) | 2023.11.06 |
변수들은 JVM에서 어디에 할당 되나요? / 클래스와 객체 차이 (0) | 2023.11.06 |
클래스와 메소드의 사용 이유는 무엇인가요? (0) | 2023.11.06 |
char타입은 정수인가요? (0) | 2023.11.06 |