[Java] 메서드 오버라이딩과 메서드 오버로딩

DEVELOPERS_Ivan ㅣ 2024. 3. 14. 17:36

목차
- Q1_메서드 오버라이딩이란?
- Q2_메서드 오버로딩이란?

- Q1_메서드 오버라이딩이란?

더보기

A. 메서드 오버라이딩(@Override) : 부모 클래스의 메서드를 자식 클래스로 재정의하여 사용하는 것.

 

- 상위 클래스 정의 :

// 'Animal'이라는 부모 클래스 정의
class Animal {
    // 'sound'라는 메서드를 정의.
    // 이 메서드는 동물의 기본 소리를 출력할 수 있게 만들어 공통적으로 사용할 수 있습니다. 
    public void sound() {
        System.out.println("Some sound");
    }
} // end of class

 

- 하위 클래스에서 메서드 오버라이딩 : 

// 'Dog'라는 'Animal' 클래스의 자식 클래스 정의
class Dog extends Animal {
    // 부모 클래스의 'sound' 메서드를 오버라이딩.
    // 이 메서드는 'Dog'가 내는 특정한 소리(짖는 소리)를 출력합니다.
    @Override
    public void sound() {
        System.out.println("Bark");
    }
} // end of class

 

// 'Cat'이라는 'Animal' 클래스의 자식 클래스 정의
class Cat extends Animal {
    // 부모 클래스의 'sound' 메서드를 오버라이딩.
    // 이 메서드는 'Cat'이 내는 특정한 소리(울음 소리)를 출력합니다.
    @Override
    public void sound() {
        System.out.println("Meow");
    }
} // end of class

 

- Q2_메서드 오버로딩이란?

더보기

A. 메서드 오버로딩(Overloading) : 같은 이름의 메서드가 여러 매개변수를 갖도록 선언해서 다양하게 동작을 구현하는 것.

- 계산하는 클래스 정의 : 

// Calculator 클래스 정의
class Calculator {
    // 1. 두 정수의 합을 계산하는 메서드
    public int add(int a, int b) {
        return a + b;
    }

    // 2. 세 정수의 합을 계산하는 메서드
    public int add(int a, int b, int c) {
        return a + b + c;
    }

    // 3. 두 실수의 합을 계산하는 메서드
    public double add(double a, double b) {
        return a + b;
    }

    // 4. 정수 배열의 모든 요소의 합을 계산하는 메서드
    public int add(int[] numbers) {
        int sum = 0;
        for (int num : numbers) {
            sum += num;
        }
        return sum;
    }
} // end of class

 

- Main 클래스

// 메인 클래스와 메인 메서드 정의
public class Main {
    public static void main(String[] args) {
        Calculator calculator = new Calculator();

        // 다양한 버전의 'add' 메서드 호출
        System.out.println(calculator.add(10, 20));       // 두 정수의 합
        System.out.println(calculator.add(10, 20, 30));  // 세 정수의 합
        System.out.println(calculator.add(10.5, 20.5));  // 두 실수의 합
        System.out.println(calculator.add(new int[]{1, 2, 3, 4, 5}));  // 정수 배열의 합
    } // end of main
} // end of class