발전을 위한 기록

[Java] 자바 오버로딩(Overloading)과 오버라이딩(Overriding) 본문

프로그래밍/자바

[Java] 자바 오버로딩(Overloading)과 오버라이딩(Overriding)

릴릴2 2024. 2. 6. 23:35

💻 오버로딩(Overloading)

  • 메소드 이름은 같지만, 매개변수의 종류나 개수가 다른 여러 버전의 함수를 만드는 것입니다.

💻 오버라이딩(Overriding)

  • 부모 클래스에서 이미 정의한 메소드를 자식 클래스에서 같은 이름으로 다시 정의하는 것입니다.
  • 자식 클래스에서 부모 클래스의 메소드를 덮어쓸 수 있습니다.

예제

1. 오버로딩

int add(int a, int b) {
    return a + b;
}

double add(double a, double b) {
    return a + b;
}
  • 같은 더하기 연산을 오버로딩하여 정수와 실수를 다룰 수 있도록 합니다.
  • add 메소드 이름은 같지만 매개변수의 데이터 타입이 다릅니다.
  • 오버로딩을 사용하여 동일한 작업을 다른 데이터 타입으로 수행할 수 있습니다.

2. 오버라이딩

class Animal {
    void makeSound() {
        System.out.println("동물이 소리를 냅니다.");
    }
}

class Dog extends Animal { //extends를 사용하여 상속관계를 나타냅니다.
	@Override // 이 부분은 생략해도 되지만 명시적으로 표시하는 것이 좋습니다.
    void makeSound() {
        System.out.println("개가 짖습니다.");
    }
}
  • Animal 클래스에 makeSound() 메소드를 정의했으며, 이 메소드는 "동물이 소리를 냅니다."를 출력합니다.
  • Dog 클래스는 Animal 클래스를 상속하며, makeSound() 메소드를 오버라이딩하여 "개가 짖습니다."를 출력합니다.
  • extends 키워드는 Dog 클래스가 Animal 클래스를 상속한다는 것을 나타냅니다.
  • 오버라이딩은 상속 관계에서 부모 클래스의 메소드를 자식 클래스에서 다시 정의하여 새로운 동작을 추가하거나 수정할 수 있습니다.
728x90