반응형

메소드 오버로딩(Method Overloading)

- 메소드의 반환형과 이름이 같으면서 매개변수의 수나 매개변수의 type이 다른 경우 메소드 오버로딩이 성립한다.

- 하나의 메소드로 다양한 매개변수를 받아 처리할 수 있다.

- 메소드 이름을 절약할 수 있다. ( 매개변수가 다른 동일한 기능이라면 오버로딩을 통해 처리할 수 있다. )

  이는 사용자가 클래스를 사용함에 있어 알아야하는 메소드가 줄어든다는 것을 의미한다.

 

메소드 오버라이딩(Method Overriding)

- 상속과 관련이 있으며 상위 클래스에 정의된 메소드를 하위 클래스에서 다시 정의하는 것을 뜻한다.

- 오버라이딩된 메소드는 기존 상위 클래스의 메소드를 대체한다.

- super 키워드를 통해 명시적으로 상위 클래스의 메소드를 호출할 수 있다.

- 인스턴스 변수, 클래스 변수, 클래스 메소드는 오버라이딩 대상이 아니다.

 

※ 메소드 오버라이딩이 성립하는 조건

   - 상위클래스의( 메소드의 이름, 메소드의 반환형, 메소드의 매개변수 선언 )이 같아야 한다.

   - 메소드 오버라이딩을 하면, 참조변수의 형에 상관없이 오버라이딩 한 메소드가 오버라이딩 된 메소드를

     대신하게 된다.

 

 

 

@Override

   - 어노테이션은 일종의 메모이다. ( 자바 컴파일러에게 메시지를 전달하는 목적의 메모 )

   - 위의 어노테이션은 "이 메소드는 상위 클래스의 메소드를 오버라이딩 할 목적으로 정의하였습니다." 라는 의미이다.

 

컴파일러는 어노테이션을 확인하여 오버라이딩이 제대로 되었는지 검사하고, 프로그래머의 의도대로 오버라이딩이 되지 않았다면 다음과 같은 메시지를 컴파일 단계에서 전달해준다.

 

     error : method does not override or implement a method from a supertype

 

메소드를 오버라이딩 해야 한다면 어노테이션 @Override을 사용하여 컴파일 과정에서 확인되지 않는 오류의 발생을 차단하는 것이 좋다.

 

 

 

[참고자료]

윤성우의 열혈 Java 프로그래밍

반응형

'Java > 기본' 카테고리의 다른 글

자바(Java) - 다차원 배열  (0) 2020.02.26
자바(Java) StringBuilder, StringBuffer  (0) 2020.02.26
자바(Java) 클래스 변수, 클래스 메소드  (0) 2020.02.24
자바(Java) 정보은닉, 캡슐화  (0) 2020.02.23
자바(Java) 흐름 제어  (0) 2020.02.23

+ Recent posts