메서드 오버라이딩(method overriding)은 상위 클래스로부터 상속받은 메서드와 동일한 이름의 메서드를 재정의하는 것을 의미한다. Override의 사전적 의미가 '~위에 덮어쓰다'를 의미한다는 것을 생각해보면 이해하기 쉽다. 상위 클래스의 메서드를 오버라이딩하려면 다음 세 가지 조건을 반드시 만족시켜야 한다. 메서드의 선언부(메서드 이름, 매개 변수, 반환 타입)이 상위 클래스의 그것과 완전히 일치해야 한다. 접근 제어자의 범위가 상위 클래스의 메서드보다 같거나 넓어야 한다. 예외는 상위 클래스의 메서드보다 많이 선언할 수 없다. public class HelloJava { public static void main(String[] args) { Dog dog = new Dog(); Cat c..