용어/java

[국비][JAVA] 메서드 오버로딩, 오버라이딩 차이

줌인. 2024. 5. 30. 23:12

 

메서드 오버로딩 메서드 오버라이딩
- 동일 클래스 내 메서드 이름을 같게 선언
- 매개변수의 개수, 타입, 순서가 다를 시 적용
- 반환 타입이 달라도 오버로딩으로 간주되지 않음
- 컴파일 타임에 어떤 메서드가 호출될지 결정됨
- 상속 관계에서 발생
- 부모 클래스의 메서드를 자식 클래스에서 재정의
- 메서드의 이름, 매개변수, 반환 타입이 동일
- 다형성을 실현하여 런타임에 객체의 타입에 따라 적절한
  메서드를 호출할 수 있음

 

[메서드 오버로딩 예시 코드]

class MathUtils {
    // 매개변수의 개수가 다른 경우
    int add(int a, int b) {
        return a + b;
    }

    // 매개변수의 타입이 다른 경우
    double add(double a, double b) {
        return a + b;
    }

    // 매개변수의 순서가 다른 경우
    String add(String a, int b) {
        return a + b;
    }
}

public class Main {
    public static void main(String[] args) {
        MathUtils math = new MathUtils();
        System.out.println(math.add(1, 2));         // 출력: 3
        System.out.println(math.add(1.0, 2.0));     // 출력: 3.0
        System.out.println(math.add("Number: ", 2)); // 출력: Number: 2
    }
}

 

[메서드 오버라이딩 예시 코드]

class Animal {
    void sound() {
        System.out.println("Animal makes a sound");
    }
}

class Dog extends Animal {
    @Override
    void sound() {
        System.out.println("Dog barks");
    }
}

public class Main {
    public static void main(String[] args) {
        Animal myDog = new Dog();
        myDog.sound(); // 출력: Dog barks
    }
}

 

728x90