오버라이딩은 상속 관계에서 부모 클래스의 메소드를 자식 클래스에서 재정의하는 개념이다. 부모 클래스의 메소드를 자식 클래스에서 덮어쓰는 것으로, 같은 이름의 메소드를 가지고 있더라도 부모 클래스와 자식 클래스 간의 관계에 따라 동작이 달라질 수 있다.
다음은 오버라이딩을 사용한 간단한 예제 코드이다. Animal 클래스를 상속받은 Dog 클래스에서 sound() 메소드를 오버라이딩하고 있다.
class Animal {
void sound() {
System.out.println("Animal makes a sound");
}
}
class Dog extends Animal {
@Override
void sound() {
System.out.println("Dog barks");
}
}
위의 예제에서 Dog 클래스는 Animal 클래스의 sound() 메소드를 오버라이딩하고 있다. 이로써 Dog 객체에서 sound() 메소드를 호출하면 부모 클래스인 Animal 클래스의 메소드가 아닌 자식 클래스인 Dog 클래스의 메소드가 호출된다.