Closed KOO-YS closed 3 years ago
java.lang.String
클래스는 final 클래스이기에 immutable(불변의) 오브젝트입니다.
"중복으로 필요한 문장에 대해서 한 인스턴스를 참조할 수 있다"
만약 String 클래스가 final 클래스가 아니라면, 하위 클래스를 생성하고 같아보이는 두 문자열을 만들 수 있다. 같아 보일 뿐, 두개는 엄연히 다른 인스턴스가 생성된다.
민감한 정보에 대해 READ-ONLY으로 설정하여, 정보가 변경될 우려를 덜 수 있습니다.
스레드가 어떤 객체의 상태를 변경할 수 없도록 함으로써 모든 스레드가 이 객체를 사용하는데 안전하다.
이 3가지 장점과 함께 String 클래스는 final로 선언되었다고 합니다.
참고
final 선언이 되어 있는 클래스는 하위 클래스를 생성할 수 없습니다.
java.lang.String
클래스는 final 클래스로 선언되어 있기 때문에 다음과 같이 MyString 클래스를 정의할 수 없습니다이와 같이 String 클래스는 확장에 관한 The Open-Closed Principle을 위반하고 있지만, 사실은 위반할만한 정당한 이유가 있습니다. 그 이유는 무엇입니까?