오버로딩과 오버라이딩은 단어가 비슷해서 헷갈릴 때가 있습니다.
하지만 단어만 비슷해서 헷갈릴 뿐 의미는 다르기때문에 의미에서 확실히 구분할 필요가 있다고 생각합니다.
1. 오버로딩
한 클래스 내에 같은 이름의 메서드를 여러개 정의하는 것을 오버로딩이라고 합니다.
이러한 오버로딩은 메서드의 이름이 같아야하며, 매개변수의 개수 또는 타입이 달라야합니다.
이는 동일한 메서드에서 매개변수로 넘겨주는 값에 따라 실행되는 원리입니다.
오버로딩의 예시로 println을 두면 오버로딩을 이해하는데 큰 도움이 될 수 있습니다.
아래 사진은 println메서드의 일부분입니다.
외에 int, long, float, double, char[], String, Object도 포함합니다.
2. 오버라이딩
조상클래스로부터 상속받은 메서드의 내용을 변경하는 것을 오버라이딩이라고 합니다.
오버라이딩은 메서드의 내용만 새로 작성하는 것이기 때문에 선언부(메서드의 이름, 매개변수, 반환타입)는 조상의 메서드와 일치해야 하며, 조건제어자는 원래의 메서드보다는 같거나 넓은 범위로 설정해야합니다.
class Parent {
void parentMethod() {}
}
class Child extends Parent {
void parentMethod() {} //오버라이딩
}
위를 보면 부모클래스인 Parent를 상속받은 Child클래스의 parentMehtod 메서드를 보면 부모클래스의 메서드와 이름, 매개변수, 반환타입이 모두 일치하는 것을 볼 수 있습니다.
정리
오버로딩은 메소드의 이름이 같고, 매개변수의 개수, 타입이 다릅니다.
오버라이딩은 메소드의 이름, 매개변수, 반환타입이 같아야하며, 메서드의 내용을 변경하는 것입니다.
아래의 예시입니다.
class Parent {
void parentMethod() {}
}
class Child extends Parent {
void parentMethod() {} //오버라이딩
void parentMethod(String str) {} //오버로딩
}
출처 : 자바의 정석
'코딩 > Java' 카테고리의 다른 글
Java 초기화블럭 (0) | 2020.06.23 |
---|---|
Java 매개변수와 인자 (0) | 2020.06.23 |
Java 추상클래스와 인터페이스 (0) | 2020.06.20 |
메인메소드 public static void main(String args[])의 의미 (0) | 2020.06.19 |
Java 객체지향 프로그래밍에서 꼭 기억해야 하는 부분 (1) | 2020.06.18 |
최근댓글