오버로딩(Overloading)과 오버라이딩(Overriding)

2024. 2. 3. 22:36백엔드/JAVA

# 오버로딩 (Overloading)

  • 클래스 내 이미 같은 이름의 메소드가 존재 하는 경우 매개변수의 개수 또는 타입이 다른 경우 같은 메소드명을 가진 메소드를 정의하는 것 
  • 메소드명, 매개변수 조건이 같고 리턴 값이 다른 경우 오버로딩 불가능
class Calculator {
    // 정수형 두 개를 더하는 메서드
    int add(int a, int b) {
        return a + b;
    }

    // 실수형 두 개를 더하는 메서드
    double add(double a, double b) {
        return a + b;
    }
}

 

# 오버라이딩 (Overriding)

  • 상위(부모)클래스로부터 정의되고, 상속받은 메소드를 하위(자식) 클래스에서 동일한 시그니처(메소드명, 매개변수, 리턴값)를 가지고 재정의 하는것 
class Animal {
    void makeSound() {
        System.out.println("동물이 소리를 낸다.");
    }
}

class Dog extends Animal {
    @Override
    void makeSound() {
        // 부모 클래스의 makeSound() 메서드를 호출하여 동일한 동작을 수행
        super.makeSound();
    }
}


class Cat extends Animal {
    @Override
    void makeSound() {
        System.out.println("야옹~");
    }
}

public class Main {
    public static void main(String[] args) {
        Dog dog = new Dog();
        dog.makeSound(); // 출력: 동물이 소리를 낸다.
        
        Cat cat = new Cat();
        cat.makeSound(); // 출력: 야옹~
    }
}