final 판정 (008-010)
서술형은 ANKI로 분리: 다형성의 장점 https://pocu-site.pages.dev/pocu-note/COMP2500/anki/05-polymorphism-advantages/ · 바인딩 정의·성능 https://pocu-site.pages.dev/pocu-note/COMP2500/anki/06-binding-and-final/
다음 코드의 결과는? (final 메서드 — 공식 연습 4번 유형)
public class A {
public final void print() {
System.out.println("A");
}
}
public class B extends A {
@Override
public void print() {
System.out.println("B");
}
}컴파일 오류
final메서드는 자식 클래스에서 오버라이딩(동일 시그니처 선언) 불가final을 붙이는 순간 컴파일러는 이 메서드가 오버라이딩되지 않음을 알 수 있음 → 이른 바인딩 가능 (최적화 여지)
다음 설명 중 틀린 것은? (final 클래스)
final클래스는 상속할 수 없다final클래스 안의 메서드에final을 붙이는 것은 중복이다- 모든 메서드가
final인 클래스 A는 상속할 수 없다 - Java의 기본 동작은 모든 클래스가 상속 가능하고 메서드는 가상(오버라이딩 가능)이다
3번이 틀림
- 모든 메서드가
final이어도 상속 자체는 가능 — 오버라이딩만 불가 (새 메서드 추가는 됨) - 클래스 상속을 막으려면 클래스에
final을 붙여야 함 (1번) — 상속이 안 되니 오버라이딩도 원천 불가라 메서드final은 중복 (2번) - Java는 기본이 가상이라 마음대로 상속·오버라이딩되는 것을 막는 수단이
final(4번)