ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 오버라이딩과 오버로딩
    Programming/Java 2021. 7. 29. 19:15

    절대 혼동해서는 안 될 자바의 기초 개념 중 하나는 오버라이딩과 오버로딩이다.

    이름은 비슷하지만 오버라이딩과 오버로딩은 전혀 다르다.


    오버라이딩

    정의  상속관계에서, 조상 클래스로부터 물려받은 메서드를 자식 클래스에서 재정의하는 것
    사용 상황 조상 클래스로부터 상속받은 메서드의 내용을 다른 내용으로 변경할 필요가 있을 때 (change, modify)
    조건 1. 선언부가 일치해야 한다
    ① 메서드 이름이 같아야 한다.
    ② 매개변수가 같아야 한다.
    ③ 반환타입이 같아야 한다.

    2. 접근제어자는 조상클래스보다 좁으면 안 된다.
    ※ 접근제어자의 접근 범위 : (넓다<- ) public, protected, (default), private ( -> 좁다)

    3. 조상 클래스 메서드보다 예외의 개수를 더 많이 선언할 수 없다.
    단순히 명시적으로 나열된 예외 개수가 적은지 많은지의 문제가 아니다. 자손 클래스를 더 많이 가진 상위 클래스인지도 따져야 한다.

    4. 인스턴스 메서드 -> static 메서드 / static 메서드 -> 인스턴스 메서드로 변경할 수 없다.

     

     

    오버로딩

    정의 이름은 같지만 매개변수 개수와 타입이 다른 여러 개의 새로운 메서드를 정의하는 것
    사용 상황 같은 기능을 하지만 매개변수를 다르게 받을 필요가 있는 경우
    조건 1. 메서드의 이름이 같아야 한다.
    2. 매개변수의 개수 또는 타입이 달라야 한다.
    3. 매개변수의 순서로 메서드가 구분된다면 오버로딩이 가능하다.

    ※ 메서드 반환타입은 무관하다.
    대표 예 자주 쓰는 print는 인자로 전달받은 값을 출력하는 메서드이다. 여러 타입의 인자를 넣을 수 있는 것은 다음과 같이 오버로딩이 이미 되어있기 때문이다.
    void print(boolean b)
    void print(char b)
    void print(char[] b)
    void print(double b)
    void print(float b)
    void print(int b)
    void print(long b)
    void print(Object b)
    void print(String b)

    'Programming > Java' 카테고리의 다른 글

    다형성  (0) 2021.08.02
    프로그래밍 언어의 분류  (0) 2021.07.31
    변수, 배열, 구조체, 클래스, 객체, 인스턴스  (0) 2021.07.29
    자바 프로그래밍 시작하기  (0) 2021.05.25
    이클립스 Encoding 설정  (0) 2021.05.25

    댓글

Designed by Tistory.