728x90
📋 Overloading이란?
- 메서드 이름은 같고 파라미터가 다른 메서드를 여러개 정의하는 것(같은 이름의 메서드를 여러개 정의)
📋 Method Overriding이란?
- 부모에게서 상속 받은 기능을 자식이 재정의 하는 것
Car.java
package extends1.overriding;
public class Car {
public void move(){
System.out.println("차를 이동합니다.");
}
//추가 - 자식들은 모두 이 기능을 물려받게 된다.(상속)
public void openDoor() {
System.out.println("문을 엽니다.");
}
}
Car는 부모 클래스이다.
여기서 move()라는 메서드를 정의하고 ElectricCar 자식 클래스가 상속받는다.
ElectricCar.java
package extends1.overriding;
public class ElectricCar extends Car {
@Override //부모의 기능을 새로 재정의
public void move() {
System.out.println("전기차를 빠르게 이동합니다."); //부모에서 가져온거 수정
}
//상속해서 Car의 move()를 물려받음
public void charge() {
System.out.println("충전합니다.");
}
}
(extends는 상속을 받는다는 의미)
그러나 상속을 유지하면서 move()의 기능을 변경하고 싶다면 어떻게 하는가?
move()를 재정의하면 된다.
move()의 기능을 변경하고 위에 애너테이션(주석)을 달아주면 된다.
@Override 이런 것을 애노테이션이라고 한다.
@Override란?
- 상위 클래스의 메서드를 오버라이드하는 것을 나타냄
- 오버라이딩한 메서드 위에 이 메서드를 붙임
- 필수는 아니지만 코드의 명확성을 위해 붙여주는 것이 좋다

그러고 출력을 해보면 같은 move()메서드여도 부모와 자식 클래스간 다른 내용이 출력되는 것을 확인할 수 있다.
결론:
자식클래스에서 메서드 오버라이딩을 하면 부모클래스의 메서드가 아닌 자식 클래스에서의 메서드 기능을 실행한다.
'Coding > JAVA' 카테고리의 다른 글
| [JAVA]StringBuilder (0) | 2024.09.18 |
|---|---|
| [JAVA]OCP(Open-Close Principle) 원칙 (0) | 2024.09.07 |
| [JAVA] 클래스/메서드 호출 코드 리팩토링 (0) | 2024.08.23 |
| [JAVA]NullPointerException (0) | 2024.08.23 |
| [JAVA] 기본형과 참조형 - 변수 대입 (0) | 2024.08.22 |