child 클래스를 필요에 의해 변경해야 하는 경우 parent 클래스를 오버라이딩한다.
class Point
{
int x;
int y;
String getLocation()
{
return "x: " + x + ", y: " + y;
}
}
class Point3D extends Point
{
int z;
String getLocation() // 오버라이딩
{
return "x: " + x + ", y: " + y + ", z: " + z;
}
}
조건
chlid 클래스에서 오버라이딩 하는 메서드는 조상 클래스의 메서드와
1. 이름이 같아야 한다.
2. 매개변수가 같아야 한다.
3. 반환타입이 같아야 한다.
오버로딩 vs 오버라이딩
오버로딩 | 기존에 없는 새로운 메서드를 추가 (NEW) |
오버라이딩 | 조상으로부터 상속 받은 메서드의 내용을 변경 (CHANGE, MODIFY) |
class Parent
{
void parentMethod() {
}
}
class Child extends Parent
{
void parentMethod() { // 오버라이딩 : 내용 변경
}
void parentMethod(int i) { // 오버로딩 : 새 메서드 정의
}
void childMethod() {
}
void childMethod(int i) {
}
void childMethod() { // 에러, 중복 정의
}
}