안녕하세요 여러분! 

오늘은 자바 프로그래밍에서 중요한 개념인 '오버로딩(Overloading)'과 '오버라이딩(Overriding)'의 차이점에 대해 쉽게 설명해드리려고 합니다. 

두 개념은 함수를 다룰 때 자주 사용되며, 이들을 이해하고 활용할 줄 알면 자바 프로그래밍에 큰 도움이 됩니다. 

그럼 시작해볼까요?

 

오버로딩(Overloading)
오버로딩은 하나의 클래스 내에서 같은 이름의 메소드를 여러 개 가질 수 있게 하는 것입니다. 

오버로딩된 메소드들은 매개변수의 타입, 개수, 순서가 다르게 정의됩니다. 

이를 통해 개발자들은 메소드를 더 유연하게 사용할 수 있게 됩니다.

 

예시:

1
2
3
4
5
6
7
8
9
10
11
12
13
class Calculator {
    int add(int a, int b) {
        return a + b;
    }
 
    double add(double a, double b) {
        return a + b;
    }
 
    int add(int a, int b, int c) {
        return a + b + c;
    }
}
cs
위 예시에서는 Calculator 클래스에 add 메소드를 오버로딩하였습니다. 각 메소드는 다른 타입 혹은 개수의 인수를 받아 처리할 수 있습니다.

 

오버라이딩(Overriding)
오버라이딩은 상속 관계에 있는 자식 클래스가 부모 클래스의 메소드를 재정의하는 것을 말합니다. 

오버라이딩을 통해 자식 클래스는 부모 클래스의 메소드를 덮어쓰거나 확장할 수 있습니다. 

이를 통해 코드 재사용성과 유연성이 증가합니다.

예시:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
class Animal {
    void speak() {
        System.out.println("동물이 소리를 냅니다.");
    }
}
 
class Dog extends Animal {
    @Override
    void speak() {
        System.out.println("멍멍!");
    }
}
 
class Cat extends Animal {
    @Override
    void speak() {
        System.out.println("야옹!");
    }
}
cs
위 예시에서는 Animal 클래스를 상속받은 Dog와 Cat 클래스가 부모 클래스의 speak() 메소드를 오버라이딩하여 각자 고유의 동작을 구현하고 있습니다.

 

정리

  • 목적: 오버로딩은 하나의 클래스에서 다양한 인수를 받을 수 있는 메소드를 정의하는 것이 목적입니다. 반면, 오버라이딩은 상속받은 메소드를 자식 클래스에 맞게 수정하거나 확장하는 것이 목적입니다.
  • 범위: 오버로딩은 같은 클래스 내에서 발생하며, 오버라이딩은 상속 관계에 있는 부모 클래스와 자식 클래스 사이에서 발생합니다.
  • 메소드명: 오버로딩된 메소드들은 같은 이름을 가지지만, 매개변수의 타입, 개수, 순서가 다릅니다. 오버라이딩된 메소드는 부모 클래스와 자식 클래스에서 동일한 메소드 서명을 가져야 합니다.
  • 키워드: 오버라이딩된 메소드에는 @Override 어노테이션을 붙여서 컴파일러에게 해당 메소드가 부모 클래스의 메소드를 재정의하고 있음을 알려줍니다. 오버로딩에서는 이와 같은 키워드가 필요하지 않습니다.

 

여러분이 이 글을 통해 자바의 오버로딩과 오버라이딩 개념에 대해 쉽게 이해할 수 있기를 바랍니다.

이 두 기법을 활용하면 코드의 유연성과 재사용성이 크게 향상되므로, 자바 프로그래밍에 있어 중요한 개념입니다.

'[JAVA] > ┃ⓑ KEYWORDS' 카테고리의 다른 글

[JAVA] 다형성 (Polymorphism)  (0) 2023.03.19
[JAVA] 추상화 (Abstraction)  (0) 2023.03.19
[JAVA] 상속 (Inheritance)  (0) 2023.03.19
[JAVA] 캡슐화(Encapsulation)  (0) 2023.03.18
[JAVA] this  (0) 2023.03.18