final 키워드
2024. 9. 17. 09:37ㆍ정보처리,전산/JAVA
반응형
Java에서 final 키워드를 함수(메서드)에 사용하는 이유는 메서드를 더 이상 오버라이드할 수 없도록 방지하여 자식 클래스에서 부모 클래스의 final로 선언된 메서드를 재정의하지 못하게 하는 것이 final 메서드의 역할이다.
- 메서드의 행동을 보장하고 싶을 때: 어떤 메서드의 특정 동작을 자식 클래스에서 변경할 수 없도록 해야 하는 경우가 있다. , 보안 관련 메서드나 라이브러리 코드에서 중요한 로직을 담고 있는 메서드는 재정의되지 않도록 해야 한다.
- 성능 최적화: 자바 컴파일러는 final 메서드를 인라인으로 최적화할 수 있다. 즉, 메서드 호출을 줄여 성능을 향상시킬 수 있다. 그러나 이는 자바 컴파일러가 수행하는 최적화의 일환이며 모든 경우에 적용되는 것은 아니다.
- 디자인 목적: 클래스 설계 시, 메서드의 오버라이딩을 의도적으로 막음으로써 하위 클래스가 부모 클래스의 중요한 동작을 변경하지 못하도록 할 수 있다.
package ex;
class Parent {
// final 메서드: 이 메서드는 자식 클래스에서 오버라이드할 수 없습니다.
public final void displayMessage() {
System.out.println("This is a final method in the Parent class.");
}
// 일반 메서드: 이 메서드는 오버라이드 가능합니다.
public void showMessage() {
System.out.println("This is a non-final method in the Parent class.");
}
}
class Child extends Parent {
// final 메서드는 오버라이드할 수 없습니다.
// public void displayMessage() {
// System.out.println("Trying to override final method."); // 컴파일 오류 발생
// }
// 오버라이드 가능한 메서드
@Override
public void showMessage() {
System.out.println("This is an overridden method in the Child class.");
}
}
public class FinalMethodExample {
public static void main(String[] args) {
Child child = new Child();
// final 메서드 호출 (오버라이드 불가)
child.displayMessage(); // 출력: This is a final method in the Parent class.
// 오버라이드된 메서드 호출
child.showMessage(); // 출력: This is an overridden method in the Child class.
}
}
반응형
'정보처리,전산 > JAVA' 카테고리의 다른 글
Java 문자와 숫자 비교 | 캐스팅 | 대문자 소문자 | 문자 빈도 수 (0) | 2024.11.21 |
---|---|
HTTP GET 및 POST 요청을 처리하는 방법 (0) | 2024.11.15 |
환경 변수 설정한 JAVA 버전 확인이 안될 때 (0) | 2024.08.08 |
생성자 오버라이딩 업캐스팅 (0) | 2024.07.26 |
생성자의 오버로딩 (Overloading) (0) | 2024.07.17 |