반응형
오버라이딩이란?
조상 클래스로부터 상속(inheritance)받은 메서드의 내용을 변경하는 것
상속(inheritance)받은 메서드를 그래도 사용하기도 하지만, 자손 클래스 자신에 맞게 변경해야하는 경우가 많다.
class Point {
int x;
int y;
String getLocation() {
return x + "," + y;
}
}
class Point3D extends Point {
int z;
String getLocation() { // 오버라이딩
return x + "," + y + "," + z;
}
}
오버라이딩의 조건
오버라이딩은 메서드의 내용만을 새로 작성하는 것이므로 메서드의 선언부는 조상의 것과 완전히 일치해야 한다.
- 메서드의 선언부는 조상의 것과 완전히 일치해야 한다.
- 접근 제어자는 조상 클래스의 메서드 보다 좁은 범위로 변경 할 수 없다.
- 조상 클래스의 메서드 보다 많은 수의 예외를 선언할 수 없다.(예외의 개수가 아닌 범위)
- 인스턴스 메서드를 static 메서드로 또는 그 반대로 변경할 수 없다.
class Parent {
// 조상 클래스의 메서드 보다 많은 수의 예외를 선언할 수 없다.
protected void method1(String data1, String data2) throws IOException, SQLException {
...
}
}
class Child extends Parent{
// 접근 제어자는 조상 클래스의 메서드 보다 좁은 범위로 변경 할 수 없다.(public 사용가능, public > protected)
public void method1(String data1, String data2) throws IOException { // 메서드의 선언부는 조상의 것과 완전히 일치해야 한다.
...
}
}
오버로딩 vs 오버라이딩
오버로딩(overloading)과 오버라이딩은 서로 혼동하기 쉽지만 아예 다른 것이다.
오버로딩(Overloading)
상위 클래스의 메소드와 이름, return 값은 동일하지만, 매개변수만 다른 메소드를 만드는 것을 의미
오버라이딩(Overriding)
조상 클래스에 존재하는 메소드를 하위 클래스에서 필요에 맞게 재정의하는 것을 의미
반응형
'Java' 카테고리의 다른 글
그 외 제어자(otherwise modifier) (0) | 2021.09.16 |
---|---|
접근 제어자(access modifier) (0) | 2021.09.16 |
상속(inheritance) (0) | 2021.09.14 |
변수의 초기화 (0) | 2021.09.14 |
재귀호출(recursive call) (0) | 2021.09.14 |