public class HashSet<E> extends AbstractSet<E> implements Set<E>, Cloneable, Serializable
왜 HashSet은 AbstractSet을 확장하고 Set?
왜 HashSet은 AbstractSet을 확장하고 Set을 구현하는 이유는 무엇입니까? AbstractSet은 이미 Set을 구현 했습니까?
public class HashSet<E> extends AbstractSet<E> implements Set<E>, Cloneable, Serializable
왜 HashSet은 AbstractSet을 확장하고 Set?
왜 HashSet은 AbstractSet을 확장하고 Set을 구현하는 이유는 무엇입니까? AbstractSet은 이미 Set을 구현 했습니까?
HashSet
은 Set
입니다. Set
인터페이스로 정의 된 계약을 구현합니다. 따라서 클래스 계층 구조를 확인하지 않고도 해당 인터페이스를 구현한다는 점을 분명히하는 것이 유용합니다.
AbstractSet<E>
을 확장한다는 것은 구현 세부 사항입니다. 향후 Java 버전에서 AbstractSet
을 확장하는 것을 중지 할 수도 있지만 (가능성은별로 없겠지만) 항상 Set
을 구현합니다.
물론 set
인터페이스를 구현하지 않으면 제대로 작동합니다. 그러나 모든 프로그래머가 클래스의 전체 계층을 보지 않고도 코드를 올바르게 이해할 수 있도록 코드를보다 읽기 쉽게 작성하기 위해 수행됩니다. 또한 위험을 최소화하기 위해 미래에 발생할 수 있습니다 (HashSet
은 AbstructSet
을 구현하지 않지만 매우 그렇습니다).