본문 바로가기
  • 시 쓰는 개발자
1일 1개념정리 (24년 8월~)/Java

1일1개 (17) - 오버라이딩 vs 오버로딩

by poetDeveloper 2024. 8. 26.

1일 1개념정리 24.08.09.금 ~ 

 

큰 결정에 큰 동기가 따르지 않을 때도 있다. 하지만 큰 결심이 따라야 이뤄낼 수 있다.

무조건 무조건 1일 1개의 개념 정리하기 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!


#17. 오버라이딩 vs 오버로딩

이름은 비슷하지만 전혀 다른 이 둘 !!!! Java를 처음 보면 좀 헷갈리는 개념인데, 한번 정리해보자 !!

 

오버라이딩 OverRiding

  • 상속시 부모 클래스의 메소드를 재정의하는 것을 의미함.
  • 오버라이딩된 메소드는 부모 클래스의 메소드와 동일한 이름, 동일한 파라미터를 가져야 함. (동일한 시그니처)
  • 이를 통해 자식 클래스는 부모 클래스의 메소드를 필요에 맞게 수정할 수 있다.
class Parent {
    void showMessage() {
        System.out.println("Parent message");
    }
}

class Child extends Parent {
    @Override
    void showMessage() { // 동일한 이름과 동일한 파라미터 가져야함
        System.out.println("Child message");
    }
}

오버로딩 OverLoading

  • 동일한 클래스 내에서 동일한 이름의 메소드를 여러 개 정의하는 것을 의미함.
  • 각 메소드는 서로 다른 파라미터를 가져야함. (개수, 순서, 타입)
  • 이를 통해 같은 기능을 하는 메소드에 다양한 입력을 처리할 수 있는 유연성을 제공한다.
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;
    }
}

비교

1. 오버라이딩

  • 상속 관계에서 발생. 부모 클래스의 메소드를 자식 클래스에서 재정의함
  • 메소드 시그니처가 동일 => 메소드 이름, 파라미터 타입, 개수 등이 같아야함.

2. 오버로딩

  • 동일한 클래스 내에서 발생. 같은 기능을 수행하지만 다른 형태의 입력을 처리.
  • 메소드 이름은 동일하지만 파라미터 목록이 다름.

 

추가정보

  • 다형성 : 오버라이딩을 포함하는 개념으로, 같은 이름의 메소드가 여러 클래스에서 다른 동작을 하게 만드는 것을 의미.
  • 추상 메소드 : 부모 클래스에 선언되지만 하위 클래스에서 반드시 구현해야 하는 메소드로, 오버라이딩을 강제한다.

 

억지로 외우기 TIP

1. 오버라이딩

라이딩 = 자전거 타기. 부모님이랑 같이 자전거 탐.

  • 부모님이 자전거 타는데 리듬타면서 슉 슈슉 슉 슈슉 이렇게 페달을 밟음.
  • 나는 슉슉 슈슈슉 슉슉 슈슈슉 이렇게 페달 밟음.
  • 페달을 밟는 메소드를 자식 클래스에서 재정의하여 슉슉 슈슈슉 하면서 가고있음.

→ 즉, 오버라이딩은 부모가 했던 것을 내가 다른 스타일로 재정의한 것임.

 

2. 오버로딩

로딩 = 트럭에 짐을 싣는 것 (로드)

  • 같은 트럭에 큰 상자, 작은 상자, 중간 상자 등 다양한 크기의 짐을 싣는중.
  • 클래스 : 트럭 , 메소드 : 상자
  • 서로 다른 메소드지만 같은 클래스에 넣을 수 있음. 근데 상자라는 특징은(메소드 이름) 똑같음.

→ 즉, 같은 클래스(트럭)에 상자(메소드)를 싣는데, 서로 크기가(서로 다른 기능의 메소드들) 다를 수 있음.

'1일 1개념정리 (24년 8월~) > Java' 카테고리의 다른 글

1일1개 (19) - static  (0) 2024.08.28
1일1개 (18) - 상속과 구현  (0) 2024.08.27
1일1개 (16) - 자바 final  (0) 2024.08.25
1일1개 (5) - 인터페이스  (2) 2024.08.13
1일1개 (4) - JVM  (2) 2024.08.12