[JAVA] 오버로딩(Overloading)과 오버라이드(Override)

2024. 3. 25. 18:41·JAVA

오버로딩(Overloading)과 오버라이드(Override)는 객체 지향 프로그래밍에서 중요한 개념이다. 이 두 가지 개념은 다형성(polymorphism)을 구현하는데 사용된다. 다형성은 같은 이름의 메서드나 연산자가 다양한 상황에서 다르게 동작할 수 있는 능력을 의미한다.

1. 오버로딩 (Overloading):

오버로딩은 같은 이름의 메서드를 여러 개 정의하는 것을 말한다. 오버로딩된 메서드들은 서로 다른 매개변수의 타입 또는 개수를 가져야 한다. 컴파일러는 호출된 메서드와 일치하는 매개변수를 찾아 실행한다.

public class Calculator {
    // 정수형 덧셈 메서드
    public int add(int a, int b) {
        return a + b;
    }

    // 실수형 덧셈 메서드
    public double add(double a, double b) {
        return a + b;
    }

    // 문자열 연결 메서드
    public String add(String a, String b) {
        return a + b;
    }
}

add 메서드가 오버로딩된다. 이 메서드들은 매개변수의 타입이나 개수가 서로 다르기 때문에 오버로딩이 가능합니다.

2. 오버라이드 (Override):

오버라이드는 상위 클래스의 메서드를 하위 클래스에서 재정의하는 것을 말한다. 메서드의 이름, 매개변수 타입 및 개수는 동일해야 하며,

오버라이드된 메서드는 상속된 메서드의 동작을 변경할 수 있다.

 

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

class Dog extends Animal {
    @Override
    void sound() {
        System.out.println("개짖는 소리");
    }
}

 

 

Dog 클래스는 Animal 클래스의 sound 메서드를 오버라이드했다. 따라서 Dog 객체에서 sound 메서드를 호출하면 "개짖는 소리"가 출력된다.

차이점:

  • 오버로딩은 같은 이름의 메서드를 다양한 매개변수로 정의하는 것이며, 오버라이드는 상위 클래스의 메서드를 하위 클래스에서 재정의하는 것이다.
  • 오버로딩은 컴파일 시간에 결정되고, 오버라이드는 실행 시간에 결정된다.
  • 오버로딩된 메서드는 서로 다른 매개변수를 가져야 하지만, 오버라이드된 메서드는 매개변수가 동일해야 합니다.

이러한 오버로딩과 오버라이드는 다형성(polymorphism)을 지원하여 코드의 재사용성을 높이고 유연성을 제공한다.

 

저작자표시 (새창열림)

'JAVA' 카테고리의 다른 글

[JAVA] static  (0) 2024.03.25
[JAVA] Call By Value / Call By Reference  (0) 2024.03.25
[JAVA] Class  (0) 2024.03.25
[JAVA] 예외 발생 Exception 및 그 밖의 Exception 종류 및 예시  (1) 2024.01.10
[JAVA] 자바의 자료구조  (1) 2023.11.27
'JAVA' 카테고리의 다른 글
  • [JAVA] static
  • [JAVA] Call By Value / Call By Reference
  • [JAVA] Class
  • [JAVA] 예외 발생 Exception 및 그 밖의 Exception 종류 및 예시
kwh_coding
kwh_coding
성장하는 괴물 성괴 김우형
  • kwh_coding
    코딩 일기
    kwh_coding
  • 전체
    오늘
    어제
    • 분류 전체보기
      • JAVA
      • JavaScript
        • Node
        • React
      • PYTHON
      • GitHub
      • DJANGO
      • ERP Project
      • NAVER CLOUD Web DevOps
      • 자격증
        • SQLD
        • 정보처리기사
        • ADsP
      • 코딩테스트
        • 프로그래머스 Lv0
        • 프로그래머스 Lv1
      • Spring
      • Tools
        • Postman
        • eGov
      • WEB
      • CS
  • 블로그 메뉴

    • 홈
    • GitHub
    • Notion
    • 방명록
  • 링크

    • GitHub
  • 공지사항

  • 인기 글

  • 태그

    Postman
    코딩테스트
    SQLD
    Java
    brycpt
    javascript
    django
    React
    git
    github
    코딩
    프로그래머스
    Python
    web
    private network
    js
    jsp
    코테
    AdSP
    spring
    annotation
    CORS
    RDBMS
    Tomcat
    eGov
    gitbash
    해시 암호화
    node
    html
    정보처리기사
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
kwh_coding
[JAVA] 오버로딩(Overloading)과 오버라이드(Override)
상단으로

티스토리툴바