오버라이딩(Overriding) 과 오버로딩(Overloading)

|

############### 오버라이딩(Overriding) ##################

override : ~을 타고 넘다. ~에 우선하다. 라는 뜻.

자바에서의 오버라이딩은 슈퍼 클래스의 메소드를 하위 클래스에서 다시 정의 하는것.

하위 클래스에서 다시 정의된 메소드가 슈퍼클래스의 메소드보다 우선한다고 생각하면 됨.

 

하위 클래스 입장에서 부모 클래스란 말하자면 기본적인 동작 방법을 정의한 것이라고 생각할 수 있다.

하위 클래스에서 상의 클래스와 동일한 메소드를 정의하면 부모 클래스로부터 물려 받은 기본 동작 방법을 변경하는 효과를 갖게 된다. 기본동작은 폭넓게 적용되고, 예외적인 동작은 더 높은 우선순위를 갖게하고 있다. 이것은 공학에서 일반적으로 발견되는 규칙이다. 이것을 메소드 오버라이딩(overriding)이라고 한다.

 

overriding을 하기 위해서는 메소드의 리턴 형식이 같아야 한다. 오버라이딩을 하기 위해서는 아래의 조건을 충족시켜야 한다.

  • 메소드의 이름
  • 메소드 매개변수의 숫자와 데이터 타입 그리고 순서
  • 메소드의 리턴 타입
  •  

위와 같이 메소드의 형태를 정의하는 사항들을 통털어서 메소드의 서명(signature)라고 한다. 즉, 시그니처가 같아야함.

 

############### 오버로딩(Overloading) ##################

한 클래스 내에서 같은 이름의 메소드를 파라미터와 처리동작, 리턴값을 다르게 하여 여러번 정의하는 것.

이름은 같지만 시그니처는 다른 메소드를 중복으로 선언 할 수 있는 방법을 메소드 오버로딩(overloading)이라고 한다.

 

메소드 오버로딩은 매개변수를 사용한다. 즉 매개변수가 다르면 이름이 같아도 서로 다른 메소드가 되는 것이다.

반면에 매개변수는 같지만 리턴타입이 다르면 오류가 발생한다. 

 

'같은 이름, 다른 매개변수를 가진 메소드를 여러 클래스에 로딩한다.'

 

<예시>

class Calc{

  int plus(int a, int b){   -> 매개변수가 다름

     int k = a + b;

     return k;

  }

  double plus(double a, double b, double c){         -> 매개변수가 다름

     return a+b+c;

  }

}

 

 

'Java' 카테고리의 다른 글

API와 API 문서 보는 법  (0) 2019.06.06
클래스 패스  (0) 2019.05.29
상속  (0) 2019.05.23
초기화와 생성자  (0) 2019.05.23
유효범위  (0) 2019.05.23
And