ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [JAVA] 오버로딩과 오버라이딩의 차이점
    프로그래밍/JAVA 2018. 12. 5. 18:54

    오버로딩과 오버라이딩은 자바에서 다형성을 이루는 방법들이다.

     

    오버라이딩은 슈퍼클래스의 메소드 이름, 매개변수 타입과 개수, 리턴 타입을 모두 동일하게 서브 클래스에 재작성 하는 경우

    오버로딩은 한 클래스나 상속 관계에 있는 클래스들 사이에 메소드의 이름은 같지만 매개변수 타입이나 개수가 다르게 메소드를 작성하는 경우이다.

    오버라이딩은 상속 관계에서 성립하지만 오버로딩은 동일한 클래스 내 혹은 상속 관계 둘다 가능하다.

     

    오버라이딩의 예

     

    class Human                                   // 슈퍼 클래스

    public void genderShow(){       

    System.out.println("Human");

    }

    }

     

    class Man extends Human{                // Human 클래스를 상속받은 자식 클래스 Man

    public void genderShow(){           // 슈퍼 클래스의 메소드 이름, 매개변수 타입과 개수가 모두 일치 -> 오버라이딩

    System.out.println("Man");

    }

    }

     

    class Woman extends Woman{            // Human 클래스를 상속받은 자식 클래스 Woman

    public void genderShow(){

    System.out.println("Woman");

    }

    }

     

    Human 클래스의 genderShow() 메소드를 Man 클래스와 Woman 클래스가 상속받아서 각각 오버라이딩 하고 있다.

     

    오버로딩의 예

     

    class Calculator{

    public int getSum(int i, int j){       

    return i+j

    }

    public int getSum(int i, int j, int k){            // 위의 getSum 메소드와 메소드 이름은 동일하지만 매개변수 개수가 다르다.

    return i+j+k;

    }

    public double getSum(double i, double j){    // 매개변수 타입이 다른 경우

    return i+j;

    }

    }

    getSum 메소드가 각각 매개변수 개수와 타입이 다르게 오버로딩 하고 있다.

     

     

     

    댓글

Designed by Tistory.