오버로딩과 오버라이딩

Bam·2023년 2월 22일
0

자바

목록 보기
13/19

오버로딩: 하나의 클래스 내에서 같은 이름의 메소드나 생성자를 여러 개 정의하는 것입니다. 이 때 메소드나 생성자의 매개변수의 개수, 타입, 순서 등이 달라야 합니다. 메소드나 생성자의 시그니처(signature)는 다르지만, 이름은 같기 때문에 메소드 오버로딩(또는 생성자 오버로딩)이라고 합니다. 이를 통해 같은 이름의 메소드를 다양한 매개변수를 이용하여 호출할 수 있습니다.

public class Calculator {
    public int add(int a, int b) {
        return a + b;
    }
    public double add(double a, double b) {
        return a + b;
    }
}

오버라이딩: 상위 클래스(super class)에서 정의된 메소드를 하위 클래스(sub class)에서 재정의하는 것입니다. 상위 클래스의 메소드 시그니처와 이름은 그대로 유지되지만, 하위 클래스에서는 동일한 이름과 시그니처를 가진 새로운 메소드를 정의합니다. 이를 통해 하위 클래스에서 상위 클래스의 메소드를 재정의하고, 다양한 기능을 추가하거나 변경할 수 있습니다.

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

따라서, 오버로딩과 오버라이딩은 이름과 매개변수를 통해 어떤 메소드를 호출하는지 결정하는 방식에서 차이가 있습니다. 오버로딩은 같은 이름으로 다양한 메소드를 호출할 수 있도록 하고, 오버라이딩은 하위 클래스에서 상위 클래스의 메소드를 재정의하여 새로운 기능을 추가하거나 변경할 수 있도록 합니다.

profile
Challenger

0개의 댓글