IT•개발 끄적/Java
[java] 오버로딩, 오버라이딩 사용법, 차이점
소다맛사탕
2021. 4. 24. 16:47
반응형
안녕하세요. 소다맛사탕 입니다.
이번 포스팅은 java의 메서드 선언 방식에서 오버로딩(overloading)과 오버라이딩(overriding)의 특징과 차이점을 알아보겠습니다.
1. 오버로딩(overloading)
한 클래스 내에 같은 이름의 메서드를 여러개 정의하는 것. (메서드 오버로딩 또는 오버로딩)
1-1. 오버로딩의 조건
- 메서드 이름이 같아야 함
- 매개변수의 갯수 또는 타입이 달라야 함
; 반환 타입은 오버로딩을 구현하는데 아무런 영향을 주지 못한다.
1-2. 오버로딩의 장점
- 메서드들이 하나의 이름으로 정의될 수 있음.
- 메서드의 이름을 절약할 수 있음.
class TestOverloading {
public static void main(String args[]) {
Overloading01 ol01 = new Overloading01();
System.out.println(ol01.add(1, 1));
System.out.println(ol01.add(1L, 1));
System.out.println(ol01.add(1, 1L));
System.out.println(ol01.add(1L, 1L));
int[] a = {100, 200, 300};
System.out.println(ol01.add(a));
}
}
class Overloading01 {
int add(int a, int b) {
return a + b;
}
long add(int a, long b) {
return a + b;
}
long add(long a, int b) {
return a + b;
}
long add(long a, long b) {
return a + b;
}
int add(int[] a) {
int result = 0;
for(int i = 0; i < a.length; i++){
result += a[i];
}
return result;
}
}
>> 결과
>> 2
>> 2
>> 2
>> 2
>> 600
2. 오버라이딩(overriding)
조상 클래스로부터 상속받은 메서드의 내용을 변경하는 것.
2-1. 오버라이딩의 조건
; 자손 클래스에서 오버라딩하는 메서드는 조상 클래스의 메서드와
- 이름이 같아야 함
- 매개변수가 같아야 함
- 반환타입이 같아야 함
/**
* 접근 제어자는 조상 클래스의 메서드보다
* 좁은 범위로 변경할 수 없다.
*/
//// 접근 제어자의 접근 범위 ////
// public, protected, (default), private
/**
* 조상 클래스의 메서드보다
* 많은 수의 예외를 선언할 수 없다.
*/
//// 모든 예외의 최고 조상인 Exception을 쓰면
//// 조건을 만족하지 못할수 있다.
/**
* 인스턴스메서드를 static 메서드로 또는
* 그 반대로 변경할 수 없다.
*/
오버로딩 VS 오버라이딩
오버로딩은 기존에 없는 새로운 메서드를 추가하는 것.
(추가. NEW)
오버라이딩은 조상으로부터 상속받은 메서드의 내용을 변경하는 것.
(변경, MODIFY, CHANGE)
class Info {
void nameMethod() {
}
}
class detailInfo extends Info {
// 오버라이딩(overriding)
void nameMehtod() {
}
// 오버로딩(overloading)
void nameMethod(String nm) {
}
void phoneMethod() {
}
// 오버로딩
void phoneMethod(int i) {
}
// 중복 정의 에러.
// void phoneMehtod() {
// }
}