메서드 오버라이딩(overriding)
- 조상 클래스에 정의된 메서드를 자식 클래스에서 적합하게 수정하는 것
- 재정의 후에는 재정의한 메서드가 사용된다.
오버라이딩의 조건
- 메서드 이름이 같아야 한다.
- 매개 변수의 개수, 타입, 순서가 같아야 한다.
- 리턴 타입이 같아야 한다.
- 접근 제한자는 부모보다 범위가 넓거나 같아야 한다.
- 조상보다 더 큰 예외를 던질 수 없다.
Annotation
- 사전적 의미: 주석
- 컴파일러, JVM, 프레임워크 등이 보는 주석
- 소스코드에 메타 데이터를 삽입하는 형태
- 소스 코드에 붙여 놓은 라벨
- 코드에 대한 정보 추가 -> 소스 코드의 구조 변경, 환경 설정 정보 추가 등의 작업 진행
JDK 1.5의 기본 annotation의 예
- @Deprecated
- 컴파일러에게 해당 메서드가 deprecated 되었다고 알려줌
- 해당 메서드에 취소선이 그어지나 사용은 할 수 있음
- 곧 없어질 수 있다.
- @Override
- 컴파일러에게 해당 메서드는 override한 메서드임을 알려줌
- 재정의되어 있는지 확실하게 확인 할 수 있다.
- 재정의했다고 생각했으나 안되었을 경우 에러표시를 해줌
- @SuppressWarnings
- 컴파일러에게 사소한 warning의 경우 신경 쓰지 말라고 알려줌
Object의 메서드
- toString 메서드
- 객체를 문자열로 변경하는 메서드
- equals 메서드
- 두 객체가 같은지를 비교하는 메서드
- 두 개의 레퍼런스 변수가 같은 객체를 가리키고 있는가?
- 객체의 주소 비교: == 활용(참고, 문자열을 리터럴로 작성 후 비교하면 같게 나온다)
- 객체의 내용 비교: equals 재정의
- hashCode
- 객체의 해시 코드: 시스템에서 객체를 구별하기 위해 사용되는 정수 값
- HashSet, HashMap 등에서 객체의 동일성을 확인하기 위해 사용
- equals 메서드를 재정의할 때는 반드시 hashCode도 재정의할 것
- 미리 작성된 String이나 Number 등에서 재정의된 hashCode 활용 권장