코딩/Java

자바 - 클래스 상속 못하게 하는 법 (final 키워드)

Junoni 2024. 11. 18. 05:03
반응형

자바는 객체 지향 프로그래밍 언어이기 때문에 상속은 아주 중요한 특징이다.

하지만 내가 설계한 클래스를 다른 코드에서 사용할 수 있게 하고 상속만 못하게 하고 싶은 경우가 있다.

이럴 때, final 키워드를 활용하면 된다.

 

 

final class Apple { }

// class NewApple extends Apple { } error: cannot inherit from final Apple

위와 같이 Apple 클래스를 final로 정의했더니 NewApple 클래스는 Apple 클래스를 상속 할 수 없다.

 

 

그러면 상속을 못하게 하는 이유는 무엇일까?

1. 설계한 클래스만 사용할 것을 강제하고 싶을 때 (상속을 하면 자식 클래스에서 부모 클래스의 코드를 수정(오버라이드) 및 새로운 코드 추가 가능).

2. 보안 (상속을 통해 부모 클래스의 기존 코드를 악의적으로 수정(오버라이드) 혹은 추가 -> 상속한 클래스를 부모 클래스 대신 사용 -> 보안 이슈 가능성 존재).

반응형