개발 일지/Java

[Java] 메서드 오버라이딩(Method Overriding)

미숫가루설탕많이 2022. 12. 29. 16:09

 메서드 오버라이딩(method overriding)은 상위 클래스로부터 상속받은 메서드와 동일한 이름의 메서드를 재정의하는 것을 의미한다. Override의 사전적 의미가 '~위에 덮어쓰다'를 의미한다는 것을 생각해보면 이해하기 쉽다.

 

 

 

 상위 클래스의 메서드를 오버라이딩하려면 다음 세 가지 조건을 반드시 만족시켜야 한다.

 

  1. 메서드의 선언부(메서드 이름, 매개 변수, 반환 타입)이 상위 클래스의 그것과 완전히 일치해야 한다.
  2. 접근 제어자의 범위가 상위 클래스의 메서드보다 같거나 넓어야 한다.
  3. 예외는 상위 클래스의 메서드보다 많이 선언할 수 없다.

 

public class HelloJava {
    public static void main(String[] args) {
        Dog dog = new Dog();
        Cat cat = new Cat();
        Jaeyun jaeyun = new Jaeyun();

        dog.run();
        cat.run();
        jaeyun.run();
    }
}

class Animal {
    void run() {
        System.out.println("Animal is running");
    }
}

class Dog extends Animal {
    void run() {
        System.out.println("Dog is running");
    }
}

class Cat extends Animal {
    void run() {
        System.out.println("Cat is running");
    }
}

class Jaeyun extends Animal {
    void run() {
        System.out.println("Jaeyun is running");
    }
}

 

 위 코드를 보면 Animal 클래스에 run() 메서드가 정의되어 있고 Dog, Cat, Jaeyun 클래스에서 run() 메서드를 재정의하여 Animal 클래스의 run() 메서드를 오버라이딩하는 것을 볼 수 있다.

 

 따라서 Dog, Cat, Jaeyun의 인스턴스를 통해 run() 메서드를 호출하면 Animal 클래스의 run() 메서드가 아닌 Dog, Cat, Jaeyun 클래스의 run()이 호출된다.

 

 이처럼 메서드 오버라이딩은 상위 클래스에 정의된 메서드를 하위 클래스에서 메서드를 재정의하여 하위 클래스에 맞게 동작을 변경하고자 할 때 사용한다.

'개발 일지 > Java' 카테고리의 다른 글

[Java] Object 클래스  (0) 2022.12.29
[Java] super과 super()  (0) 2022.12.29
[Java] 상속/포함 관계  (0) 2022.12.29
[Java] 상속(Inheritance)  (0) 2022.12.29
[Java] 내부 클래스(Inner Class)  (0) 2022.12.28