728x90
오버로딩(Overloading)
overloading = 과적하다
자바에서는 하나의 메소드 이름으로 여러 기능을 구현함.
오버로딩의 조건
- 메소드의 이름이 같아야함
- 매개변수의 개수나 타입이 달라야함
‼️ 리턴값만 다른것, 접근제어자가 다른 것은 오버로딩이 가능하지 않다.
오버로딩의 적용범위
같은 클래스 내에서 적용된다.
사용이유
- 같은 기능을 하는 메소드를 하나의 이름으로 사용가능하다
- 메소드의 이름을 절약할 수 있다.
print()함수를 정의한다고 생각해보자.
void print(int price);
void print(Double price, int price);
void print(String content);
다양한 타입의 매개변수들을 집어넣어도 아주 잘 출력이 되는 것을 확인할 수 있고, 수많은 메소드의 이름을 지어줘야할것을 하나의 메소드 이름으로 재사용이 가능해서 이름을 절약할 수 있다.
오버라이딩(Overriding)
부모클래스로부터 상속받은 메소드를 자식 클래스에서 재정의
상속받은 메소드를 그대로 사용할 수도 있고, 자식 클래스에서 상황에 맞게 변경해야하는 경우 오버라이딩해서 사용
오버로딩의 조건
- 메소드의 이름, 매개변수, 리턴값이 모두 같아야함
- @Override 어노테이션 사용
@Override
오버라이딩을 검증하는 기능을 하는 주석(Annotation)
오버라이딩이 실제로 시행되지 않으면 컴파일시 오류를 출력함
선언부(이름, 매개변수, 리턴값)가 부모 클래스의 메소드와 완벽히 일치해야함
접근제어자는 다르게 설정이 가능
🫧 자식 클래스에서 오버라이딩하는 메소드의 접근 제어자는 부모 클래스보다 더 좁게 설정할 수 없음
🫧 예외는 부모클래스의 메소드보다 많이 선언할 수 없음
- 자식 클래스에서는 부모클래스의 예외범위보다 더 큰 범위의 예외를 throws 할 수 없다.
🫧 static 메소드 <-> 인스턴스 메소드 변경 불가
- 부모클래스에서 static인 것을 자식클래스에서 인스턴스메소드로 변경이 불가능하고 그 반대도 불가
- 부모클래스의 static 메소드를 자식에서 같은 이름으로 정의할 수 있지만 이것은 다시 정의하는 것이 아니라 같은 이름의 static메소드를 새로 정의하는 것이다.
728x90
'Language > Java' 카테고리의 다른 글
[Java] Hashmap 정렬방법 (0) | 2023.02.01 |
---|---|
[Java] 람다 표현식 / 함수형 인터페이스 (@FunctionalInterface) (0) | 2023.01.31 |
[Java] 익명함수 (익명 자식 객체, 익명 구현 객체) (0) | 2023.01.31 |
[ JAVA ] Comparable과 Comparator (0) | 2021.08.06 |
[JAVA/자바] Arrays클래스 : fill, sort, copyOf (0) | 2021.07.12 |