반응형
오버라이딩 (overriding)
- 상속받는 조상의 메서드를 자신(상속받은 클래스)에 맞게 변경하는 것
- 메소드 동작만을 재정의하는 것
- 선언부는 못바꾸고 구현부(내용)만 변경 가능
오버라이딩의 조건
- 선언부 (반환타입, 메서드이름, 매개변수 목록) 가 조상클래스의 메서드와 일치해야 한다.
- 접근제어자를 조상클래스의 메서드보다 좁은 범위로 변경할 수 없다.
- 예외는 조상클래스의 메서드보다 많이 선언할 수 없다.
실습
package pkg1;
class MyPoint3 {
int x;
int y;
String getLocation(){
return "X:"+x+", y:"+y;
}
}
class MyPoint3D extends MyPoint3 {
int z;
// 조상의 getLocation()을 오버라이딩
String getLocation(){
return "x:"+x+", y:"+y+", z:"+z;
}
}
public class OverrideTest {
public static void main(String[] args) {
MyPoint3D p = new MyPoint3D();
p.x = 3;
p.y = 5;
p.z = 7;
System.out.println(p.getLocation());
}
}
출력
x:3, y:5, z:7
상속을 받되 오버라이딩했다고해서 원래 메서드가 바뀌지는 않고, 선언할때만 변경한 메서드가 호출된다.
오버로딩 vs 오버라이딩
두가지가 관계는 없지만 비슷한 이름의 오버로딩과의 비교
- 오버로딩 (overloading) - 기존에 없는 이름이 같은 새로운 메소드를 정의하는 것
- 오버라이딩 (overriding) - 상속받은 메소드의 내용을 변경하는 것 (기존의 메소드 재정의)
반응형
'Backend > Java' 카테고리의 다른 글
[Java] Java ArrayList (개념, 메소드) (0) | 2023.06.17 |
---|---|
[Java] Java Collection List, Set, Map (1) | 2023.06.17 |
[Java] 접근제어자 (access modifier) (0) | 2023.06.13 |
[Java] 상속 Inheritance, 포함 관계 (composite) (0) | 2023.06.13 |
Socket 소켓 통신 (0) | 2023.06.06 |