□ Overriding(오버라이딩) : 상속 관계에 있는 두 클래스 중 하위 클래스에서 상위 클래스에 있는 클래스의 메소드를 재정의 하는 것. 이렇게 되면 하위 클래스의 메소드는 고유한 특성을 가짐
Overriding(오버라이딩)의 규칙
|
1. 상위 클래스의 메소드 이름과 일치해야 한다.
2. 상위 클래스의 메소드 매개변수의 개수와 데이터형이 일치해야 한다.
3. 접근 제한자느 범위가 같거나 더 넓은 범위의 접근 제한자로 선언해야 한다.
4. 상위 클래스의 메소드 리턴형과 일치해야 한다.
5. 상위 클래스에서 final 제한자로 선언된 메소드는 오버라이딩 할 수 없다.
6. 상위 클래스에서 static 제한자로 선언된 메소드를 오버라이딩 할 때는 static 제한자를 반드시 선언해야 한다.
7. 상위 클래스에서 private 접근 제한자로 선언된 메소드는 오버라이딩 할 수 없다.
8. 상위 클래스의 생성자는 상속되지 않기 때문에 오버라이딩 할 수 없다.
|
※ 오버로딩과 오버라이딩 문제 푸는 순서
① 메소드의 이름 확인 -> 동일하지 않은 메소드의 이름은 선언가능
② 메소드의 매개변수의 타입 및 개수 확인 -> 타입이나 개수가 다를 경우 혹은 순서가 다를 경우 다른 메소드로 인식함으로써 오버로딩 가능. ②번의 경우는 오버로딩 확인 하는 것임
③ 메소드의 접근 제한자 확인, 리턴형 확인 -> ①, ②의 경우 확인하여 메소드의 이름이 같고 메소드의 매개변수의 타입 및 개수가 같을 경우 오버라이딩한 것임. 오버라이딩의 경우 접근제한자의 경우 상위 클래스의 메소드의 접근제한자보다 크거나 같아야 함.(예] void kim ( int k, int y){}의 경우 오버라이딩 할 때에 default형보다 큰 protected, public, default형으로 선언 가능). 리턴형의 경우 상위 클래스의 메소드와 같아야함.(예] void kim(int k, int y){}의 경우 오버라이딩할 메소드의 리턴형은 반드시 void여야함)
④ 메소드의 정의 부분 확인 -> ①, ②, ③의 경우를 다 확인하면 메소드의 정의 부분을 확인해야함. 정의 부분은 상위 클래스의 메소드와 달라야 함.
댓글 없음:
댓글 쓰기
국정원의 댓글 공작을 지탄합니다.