본문 바로가기

개발 공부

오버라이드와 오버로드

오버라이드 (Override)

 

오버라이드는 자식 클래스가 부모 클래스에서 상속받은 메소드를 재정의하는 것.

  • 상속: 오버라이드는 상속을 통해 이루어진다. 자식 클래스가 부모 클래스의 메소드를 재정의한다.
  • 동일한 시그니처: 재정의하는 메소드는 부모 클래스의 메소드와 동일한 이름, 매개변수, 반환 타입을 가져야 함.
  • 다형성: 오버라이드는 다형성의 한 예. 부모 클래스 타입의 변수가 자식 클래스의 오버라이드된 메소드를 호출할 수 있다.
// 예시 코드

class Parent {
    void display() {
        System.out.println("Parent display()");
    }
}

class Child extends Parent {
    @Override
    void display() {
        System.out.println("Child display()");
    }
}

// 여기서 Child 클래스는 Parent 클래스의 display() 메소드를 오버라이드하고 있다.

 

오버로드 (Overload)

 

오버로드는 같은 이름의 메소드를 여러 개 정의하지만, 매개변수의 수나 타입을 다르게 하는 것을 말한다.

 

  • 동일한 이름, 다른 매개변수: 오버로드된 메소드는 동일한 이름을 가지지만, 매개변수의 타입, 개수, 순서가 달라야 한다.
  • 클래스 내부에서 발생: 오버로드는 동일 클래스 내부에서 발생합니다. 상속과는 관련이 없다.
  • 반환 타입: 반환 타입은 오버로드를 결정하는 데 영향을 주지 않는다. 즉, 반환 타입만 다른 두 메소드는 오버로드로 간주되지 않는다.
// 오버로드 예시코드

class Example {
    void display(int a) {
        System.out.println("Display with int: " + a);
    }

    void display(int a, String b) {
        System.out.println("Display with int and String: " + a + ", " + b);
    }
}

// 여기서 display 메소드는 매개변수의 타입과 개수가 다른 두 가지 형태로 오버로드되어 있다.

'개발 공부' 카테고리의 다른 글

AOP, Interceptor, Filter  (0) 2024.01.31
스프링의 Lifecycle  (0) 2024.01.30
Spring Security의 구조  (1) 2024.01.25
JWT 발급 과정  (0) 2024.01.24
클래스와 인스턴스의 차이  (0) 2024.01.23