오버라이딩
- 상속받은 조상의 메서드를 자신에 맞게 변형하는 것 (내용(선언부) 변경 가능)
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;
}
}
오버라이딩 조건
- 선언부가 조상 클래스의 메서드와 일치해야 한다.
- 접근 제어자를 조상 클래스의 메서드보다 좁은 범위로 변경할 수 없다.
- 예외는 조상 클래스의 메서드보다 많이 선언할 수 없다.
오버로딩 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() {}
}