본문 바로가기

개발/신입개발자 기술면접

[신입개발자 기술면접] Overloading과 Overriding 차이

반응형

"Overloading"과 "Overriding"은 객체지향 프로그래밍에서 사용되는 두 가지 다른 개념입니다.

 

Overloading (오버로딩)
  • Overloading은 같은 메서드 이름을 가진 여러 메서드들이 서로 다른 매개변수를 가지는 것을 말합니다.
  • 메서드의 이름은 같지만, 매개변수의 개수, 타입, 또는 순서가 다를 수 있습니다.
  • Overloading은 컴파일 시간에 결정되며, 컴파일러는 어떤 메서드를 호출할지 정적으로 결정합니다.
public class Example {
    public void printMessage(String message) {
        System.out.println(message);
    }

    public void printMessage(int number) {
        System.out.println(number);
    }
}

 

Overriding (오버라이딩)
  • Overriding은 상위 클래스(부모 클래스)의 메서드를 하위 클래스(자식 클래스)에서 재정의하는 것을 말합니다.
  • 메서드의 시그니처(이름, 매개변수 타입 및 개수, 반환 타입)가 일치해야 합니다.
  • Overriding은 런타임 시간에 결정되며, 객체의 실제 타입에 따라 호출될 메서드가 동적으로 결정됩니다.
public class Animal {
    public void makeSound() {
        System.out.println("Some generic sound");
    }
}

public class Dog extends Animal {
    @Override
    public void makeSound() {
        System.out.println("Bark");
    }
}

위의 예시에서 Dog 클래스는 Animal 클래스의 makeSound 메서드를 재정의(Overriding)했습니다.

 

 

차이 요약
  • Overloading은 같은 메서드 이름을 가진 여러 메서드로, 매개변수가 다르다.
  • Overriding은 상위 클래스의 메서드를 하위 클래스에서 재정의하며, 메서드 시그니처가 일치해야 한다.
  • Overloading은 컴파일 시간에 결정되고, Overriding은 런타임 시간에 결정된다.
반응형