
오버라이딩은 부모가 갖고있는 메서드를 자식이 똑같이 갖고 있으며 부모의 메서드를 수정 가능하다.
Overriding 오버라이딩
메서드를 재정의 하는 것
부모 클래스의 메소드를 자식 클래스에서 재정의하여 사용한다.
아래의 Car 클래스를 상속받아 오버라이딩하는 예제이다.
public class Car {
String name;
int carNumber;
public void attach10(int carNumber){
String finalCarNumber="10" + Integer.toString(carNumber) ;
System.out.println(finalCarNumber);
}
public void bigLetter(String name){
String finalLetter=name.toUpperCase();
System.out.println(finalLetter);
}
}
public class Bus extends Car{
public void attach10(int carNumber){
System.out.println("Bus");
}
}
public class BudExam {
public static void main(String[] args) {
Bus bus = new Bus();
bus.attach10(1234);
}
}
이렇게 되면 1234 를 파라미터로 넣었음에도 불구하고 실행하면 Bus 라는 출력만 존재하게 된다.
이것이 바로 Car 부모 클래스의 attach10( ) 의 메서드를 오버라이딩함으로써 재정의한 것이다.

하지만 오버라이딩한다고 해서 부모의 메서드가 아예 사라지는 것은 아니다.
super 를 사용하면 부모의 메서드를 그대로 다시 사용가능하다.
아래는 super 를 사용하여 부모 클래스의 메서드를 그대로 사용하고 내용을 추가함으로써 메서드를 재정의하여 오버라이딩하는 예제이다.
public class Bus extends Car{
public void attach10(int carNumber){
super.attach10(carNumber);
System.out.println("Bus");
}
}
실행해보면 입력한 차 번호에 10이 붙어서 나오고 다음줄에 Bus 가 출력되는 것을 볼 수 있다.
