- 자바의 정석 (기본편)을 참고했습니다.
- 복습을 위한 게시글입니다.
- 소스에 오타가 있을 수 있습니다. ^^:;
요약)
오버로딩 - 기존에 없는 새로운 메서드를 같은 이름으로 여러 개 정의하는 것
오버라이딩 - 상속받은 메서드의 내용을 새롭게 변경하는 것
오버로딩(overloading) 이란 ?
매개변수의 개수, 타입에 따라 이름이 같은 메서드 여러 개를 사용하는 기술
메서드 오버로딩과 생성자 오버로딩이 있다.
오버로딩의 조건
1. 메서드 이름이 같아야 한다.
2. 매개변수의 개수가 다르거나, 타입이 하나라도 달라야 한다.
3. 반환(Retrun) 타입은 오버로딩에 영향을 줄 수 없다. (관계 없음)
오버로딩 예제 소스
- 오버로딩 된 add() 메서드 중 매개변수 개수와 타입이 일치되는 메서드가 호출된다.
class MyMath {
int add(int a, int b) {
return a+b;
}
long add(int a, long b) {
return a+b;
} // 매개변수 하나 다름, 리턴타입이 다르지만 관계 없기 때문에 사용가능.
int add(long a, int b) {
return a+b;
} // 매개변수 하나 다름
int add (long a, long b) {
return a+b;
} // 매개변수 둘다 다름
}
오버라이딩(overloading) 이란 ?
부모 클래스의 메서드를 상속받아 자식 클래스에서 내용을 새롭게 변경하여 사용하는 기술
상속받은 메서드를 그대로 사용하기도 하지만, 자식 클래스에 맞게 변경할 때 사용하는 기술이다.
오버라이딩의 조건
1. 접근 제어자는 조상 클래스의 메서드보다 좁은 범위로 변경할 수 없다.
2. 조상 클래스의 메서드보다 많은 수의 예외는 선언할 수 없다.
3. 오버라이딩은 메서드의 내용만을 새로 작성하는 것이므로 메서드의 선언부(이름, 매개변수, 반환타입)이 모두
일치해야 한다 !!!
오버라이딩 예제 소스
- Point3D 클래스에서는 조상 클래스 Point의 x,y 를 사용할 수 있기 때문에 굳이 새로운 메서드를 작성하는 것 보다
자식 클래스에 맞게 오버라이딩을 하는 것이 좋다.
class Point {
int x,y;
String getLocation() {
return "x:"+x+",y:"+y;
}
}
// 조상 클래스 Point로부터 상속받는 Point3D 자식 클래스
class Point3D extends Point {
int z;
String getLocation() {
retrun "x:"+x+",y:"+y+",z:"+z;
}
}
'JAVA' 카테고리의 다른 글
[JAVA 복습] 참조변수 super와 조상의 생성자 super() (0) | 2021.09.02 |
---|---|
[JAVA 복습] 상속에 대해 (0) | 2021.09.02 |
[JAVA 복습] 생성자 this() 와 객체 자신을 가리키는 참조변수 this (0) | 2021.08.31 |
[JAVA 복습] 기본 생성자와 매개변수가 있는 생성자 (0) | 2021.08.31 |
[JAVA 복습] 기본형, 참조형 매개변수의 비교 (0) | 2021.08.31 |