728x90
메서드 오버로딩(Method Overloading)
- 하나의 클래스 안에 같은 이름의 메서드를 여러 개 정의하는 것을 뜻한다. 메서드 오버로딩을 통해 하나의 메서드명으로 여러 경우의 수를 해결할 수 있고, 비슷한 기능을 가진 이름이 다른 여러 개의 메서드를 정의하여 코드의 가독성을 해치는 일을 방지할 수 있다.
조건
조건 1) 같은 이름의 메서드명을 사용해야 한다.
조건 2) 매개변수의 개수나 타입이 달라야 한다.
기타
리턴값을 다르게 하는 것으로 오버로딩이 가능하지 않다.
접근제어자를 다르게 하여 오버로딩 할 수 있다. 즉, 접근제어자를 다르게 하는 것으로 오버로딩이 가능하지 않다.
메서드 오버로딩의 대표적인 예로는 println()이 있다. plintln 메서드 안의 매개변수에 int, String, boolean 등 수많은 데이터 타입을 넣어도 각 데이터 타입에 맞는 값으로 출력이 되는데 이는 메서드 오버로딩 덕분에 가능한 일이다.
메서드 오버라이딩(Method Overriding)
- 상위 클래스로부터 상속받은 메서드와 동일한 이름의 메서드를 하위 클래스에 재정의하여 사용하는 것을 뜻한다.
조건
메서드 선언부(이름, 매개변수, 반환타입)이 상위 클래스의 메서드와 완전히 동일해야 한다.
접근제어자의 범위가 상위 클래스의 메서드와 같거나, 보다 넓어야 한다.
예외는 상위 클래스의 메서드보다 많이 선언할 수 있다.
- static 메서드를 인스턴스 메서드로 혹은 인스턴스 메서드를 static 메서드로 메서드 오버라이딩할 수 없다.
- 부모 클래스의 static 메서드와 같은 메서드명으로 자식 클래스에 정의할 수 있지만, 자식 클래스의 static 메서드는 같은 이름의 static 메서드를 새로 정의하는 것일 뿐이다.
728x90
'어딘가에 맞춰질 퍼즐 조각들' 카테고리의 다른 글
@Value 애너테이션으로 환경변수를 설정하고 참조하는 방법 1분 요약 정리 (0) | 2023.01.12 |
---|---|
프로젝트 용어 정리 (0) | 2022.12.19 |
DDD(Domain Driven Design) & 애그리거트(Aggregate) (0) | 2022.11.22 |
[JAVA] 추상클래스(Abstract class)와 인터페이스(Interface) (0) | 2022.09.19 |
[JAVA] public class VS class (0) | 2022.09.17 |