[Java/자바] 오버라이딩(overriding)이란 ?

오버라이딩 ( overriding )

오버라이딩이란, 조상 클래스로부터 상속받은 메서드의 내용을 변경하는 것을 말합니다.

 상속받은 메서드를 그대로 사용해도 되지만, 자손 클래스에 맞게 변경해야할 경우 오버라이딩을 사용합니다.

 

오버라이딩의 조건

오버라이딩이 성립되기 위해서는 다음과 같은 조건들을 만족해야 합니다.

자손 클래스에서 오버라이딩하는 메서드는 조상 클래스의 메서드와
1. 이름이 같아야 한다.
2. 매개변수가 같아야 한다.
3. 반환타입이 같아야 한다.

요약하면 선언부가 서로 일치해야 한다는 것과 같습니다.

 

오버라이딩 예시
class Point {
	int x;
	int y;
	
	String getLocation() {
		return "x :" + x + ", y :" + y;
	}
}

class Point3Dtest extends Point {
	int z;
	
	String getLocation() { // 오버라이딩
		return "x :" + x + ", y :" + y + ", z :" + z; 
		
	}
}

Point 클래스의 getLocation() 메서드는 x와 y의 값을 반환하는 메서드입니다.

Point3Dtest는 Point를 상속받았지만 x와 y 말고도 z 값이 있기 때문에 위처럼 오버라이딩하였습니다.

 


오버로딩과 오버라이딩의 차이

오버로딩과 오버라이딩이 헷갈릴 수도 있습니다.

오버로딩에 대한 설명은 아래 포스팅에 잘 설명돼있으니 참고하시길 바랍니다.

 

[Java/자바] 오버로딩 (overloading)이란 ?

오버로딩(Overloading)이라는 뜻은 사전적으로 '과적하다.'라는 뜻으로, 오버로딩이란 ? 한 클래스 내에서 같은 이름의 메서드를 여러 개 정의하는 것을 말합니다. 오버로딩의 조건 오버로딩이 성립

hstory0208.tistory.com

오버로딩과 오버라이딩의 차이점은 다음과 같으며 그 차이가 확실합니다.

오버로딩 : 기존에 없는 새로운 메서드를 정의하는 것.
오버라이딩 : 상속받은 메서드의 내용을 변경하는 것.

 

 


참고자료 : 자바의 정석3