ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 오버로딩(method overloading) vs 오버라이딩(overriding)
    프로그래밍/Java 2014. 7. 30. 00:34
    반응형

    메서드 오버로딩(method overloading)


      > 메서드 오버로딩이란?

      메서드도 변수와 마찬가지로 같은 클래스 내에서 서로 구별될 수 있어야 하기 때문에 각기 다른 이름을 가져야한다. 그러나 자바에서는 한 클래스 내에 이미 사용하려는 이름과 같은 이름을 가진 메서드가 있더라도 매개변수의 개수 또는 타입이 다르면, 같은 이름을 사용해서 메서드를 정의할 수 있다.

     

      이처럼, 한 클래스 내에 같은 이름의 매서드를 여러 개 정의하는 것을 매서드 오버로딩(method overloading) 또는 간단히 오버로딩(overloading)이라 한다.


      > 메서드 오버로딩의 조건

      1. 매서드 이름이 같아야 한다.

      2. 매개변수의 개수 또는 타입이 달라야 한다.

      3. 매개변수는 같고 리턴타입이 다른 경우는 오버로딩이 성립되지 않는다.


      > 매서드 오버로딩의 예

      void println()

      void println(boolean x)

      void println(char x)

      void println(char[]x) 

      ...


      > 매서드 오버로딩의 장점

      오버라이딩이 없다면?   printlnBoolean(boolean x)  printlnChar(char x) ...

      위의 println() 매서드와 같이 모두 근본적으로는 같은 기능을 하는 매서드들이지만, 서로 다른 이름을 갖는다면 매서드를 작성하는 쪽에서는 이름을 짓기도 어렵고, 매서드를 사용하는 쪽에서는 이름을 일일이 구분해서 기억해야하기 때문에 서로 부담된다. 



    오버라이딩(overriding)

     > 오버라이딩이란?

      조상 클래스로부터 상속받은 매서드의 내용을 변경하는 것을 오버라이딩이라고 한다. 상속받은 매서드를 그대로 사용하기도 하지만, 자손 클래스 자신에 맞게 변경해야하는 경우가 많다. 이럴 때 조상의 메서드를 오버라이딩한다. 

      class Point { 
    
        int x;
    
        int y;
    
        String getLocation(){
    
          return "x: " + x + ", y: " + y;
    
        }
    
      }
    
      class Point3D extends Point{
    
        int z;
    
        String getLocation(){
    
          return "x: " + x + ", y : " + y + ", z : " + z;
    
        }
    
      }



      > 오버라이딩의 조건?

      1. 이름이 같아야 한다.

      2. 매개변수가 같아야 한다.

      3. 리턴 타입이 같아야 한다.


      > 오버로딩 vs 오버라이딩

      오버로딩과 오버라이딩은 서로 혼동하기 쉽지만 사실 그 차이는명백하다. 

      오버로딩(overloading)은 기존에 없는 새로운 매서드를 추가하는 것(new)

      오버라이딩(overriding)은 조상으로부터 상속받은 매서드의 내용을 변경하는 것(change, modify)



    반응형

    '프로그래밍 > Java' 카테고리의 다른 글

    함수형 프로그래밍 설계 -1  (0) 2017.06.29
    Java Collection  (0) 2015.03.21
    이름이 붙은 반복문  (0) 2014.07.29
    [펌]JAVA STACK(스택) 정리  (0) 2014.07.12
    13. 메소드  (0) 2014.07.10
Designed by Tistory.