본문 바로가기
CS

[CS] 오버라이딩(Overriding)과 오버로딩(Overloading)

by 시간많은백수 2023. 9. 15.
반응형

✔️오버라이딩(Overriding)이란?

오버라이딩은 객체 지향 프로그래밍(OOP)에서 중요한 개념 중 하나로, 부모 클래스(또는 슈퍼 클래스)의 메서드를 자식 클래스(또는 서브 클래스)에서 다시 정의하여 사용하는 것을 의미합니다. 이를 통해 자식 클래스는 부모 클래스의 동일한 이름의 메서드를 가지고 있지만, 그 메서드의 동작을 자신의 필요에 맞게 변경할 수 있습니다. 오버라이딩은 다형성(Polymorphism)의 핵심 원칙 중 하나이며, 자식 클래스가 부모 클래스의 메서드를 덮어쓰는 것을 가능하게 합니다.

 

💡오버라이딩 규칙

  • 메서드 이름, 매개변수의 수, 매개변수의 타입은 부모 클래스의 메서드와 동일해야 합니다.
  • 자식 클래스에서 오버라이딩한 메서드는 @Override 어노테이션을 사용해 표시할 수 있습니다(어노테이션은 Java에서 사용되는 예시입니다).

 

💡오버라이딩 예)

1
2
3
4
5
6
7
8
9
10
11
12
13
class Animal {
    void makeSound() {
        System.out.println("동물이 소리를 낸다");
    }
}
 
class Dog extends Animal {
    @Override
    void makeSound() {
        System.out.println("멍멍!");
    }
}
 
 
cs

 

 

✔️오버로딩(Overloading)이란?

오버로딩은 같은 클래스 내에서 메서드 이름은 동일하지만 매개변수의 수나 타입이 다른 여러 메서드를 정의하는 것을 의미합니다. 오버로딩을 사용하면 같은 이름의 메서드를 다양한 매개변수로 호출할 수 있으며, 코드의 가독성을 높이고 유지보수성을 향상할 수 있습니다.

 

💡오버로딩 규칙

  • 메서드 이름은 동일해야 합니다.
  • 매개변수의 수 또는 타입이 달라야 합니다.

 

💡오버로딩 예)

1
2
3
4
5
6
7
8
9
10
class Calculator {
    int add(int a, int b) {
        return a + b;
    }
 
    double add(double a, double b) {
        return a + b;
    }
}
 
 
cs

 

이 예제에서는 add 메서드를 두 번 오버로딩하였습니다. 하나는 정수 매개변수를 받고, 다른 하나는 부동 소수점 매개변수를 받습니다.

 

💡결론

오버라이딩과 오버로딩은 객체 지향 프로그래밍에서 매우 유용한 개념이며, 코드 재사용성과 확장성을 향상시키는 데 도움이 됩니다. 오버로딩은 같은 클래스 내에서 메서드 이름(활)은 동일해야 하지만 매개변수의 수나 타입(화살)은 다르게 정의해야 합니다. 반대로 오버라이딩은 메서드 이름도 동일하며 리턴타입 또한 동일해야 한다.

반응형