본문 바로가기
반응형

Overloading (오버로딩):

  • 오버로딩은 같은 메서드 이름을 가지고 매개변수의 형식 또는 개수를 다르게 정의하는 것을 의미한다.
  • 같은 클래스 내에서 여러 메서드가 동일한 이름을 가질 수 있으며, 메서드 호출 시 전달되는 매개변수의 형식 또는 개수에 따라 호출될 메서드가 결정된다.
  • 반환 유형은 오버로딩에 영향을 미치지 않습니다.
  • 오버로딩은 다형성(polymorphism) 향상시키고 코드의 가독성을 개선하며, 같은 이름의 메서드를 다양한 상황에 맞게 사용 있게 한다.
public class Calculator {

    // 메서드 add(int a, int b)는 두 정수를 받아 정수 합을 반환
    public int add(int a, int b) {
        return a + b;
    }

    // 메서드 add(double a, double b)는 두 실수를 받아 실수 합을 반환
    public double add(double a, double b) {
        return a + b;
    }
}

/* 만약 public double add(double a, double b)의 매개 변수값이 int일 경우 아무리 
return 타입이 double이어도 컴파일 에러가 뜨게 된다. */

 

 

Overriding (오버라이딩):

  • 오버라이딩은 하위 클래스가 상위 클래스의 메서드를 동일한 시그니처(메서드 이름, 매개변수 목록, 반환 유형)으로 재정의하는 것을 말한다.
  • 오버라이딩은 상속 관계에서 발생하며, 하위 클래스에서 상위 클래스의 메서드를 재정의하여 동작을 변경할 수 있다는 특징이 있다.
  • 오버라이딩된 메서드는 하위 클래스의 인스턴스에서 호출될 때, 상위 클래스의 동일한 이름의 메서드를 대체한다.
  • 오버라이딩은 다형성(polymorphism) 상속(inheritance) 핵심 요소로, 상위 클래스의 메서드를 하위 클래스에서 커스터마이징 있습니다.
class Shape {
    // 상위 클래스인 Shape의 draw 메서드를 정의
    void draw() {
        System.out.println("Drawing a shape");
    }
}

class Circle extends Shape {
    // 하위 클래스인 Circle에서 상위 클래스의 draw 메서드를 오버라이딩(재정의)
    @Override
    void draw() {
        System.out.println("Drawing a circle"); // 상위 클래스의 메서드를 커스터마이징
    }
}

 

 

 

반응형