참조 유형으로 인터페이스 선호:
적합한 인터페이스가 존재하는 경우 구체적인 클래스 대신 이를 통해 객체를 참조해야 합니다.
이는 매개변수, 반환 값, 변수 및 필드에 적용됩니다.
인터페이스 사용 시 유연성:
인터페이스를 사용하면 코드에 영향을 주지 않고 구현을 변경할 수 있습니다.
예: LinkedHashSet에서 HashSet 또는 TreeSet으로 변경하려면 생성자를 변경하면 됩니다.
인터페이스를 사용하지 말아야 할 경우:
구현별 기능:
구현이 인터페이스에 필요하지 않은 것을 제공하는 경우(예: LinkedHashSet은 반복 순서를 보장하지만 HashSet은 보장하지 않습니다).
적절한 인터페이스가 없는 경우:
String 또는 BigInteger와 같은 일부 클래스에는 동등한 인터페이스가 없으므로 직접 사용해야 합니다.
클래스 기반 프레임워크:
예: java.io 패키지의 OutputStream은 인터페이스가 아닌 추상 클래스를 통해 참조됩니다.
구현별 방법:
예: PriorityQueue는 Queue를 구현하지만 Queue에 없는 comparator() 메서드가 있습니다. 이 추가 메소드가 필요한 경우에만 클래스를 사용하세요.
혜택:
인터페이스를 사용하면 프로그램이 더욱 유연해지고 모듈화되어 기존 코드를 손상시키지 않고도 구현을 쉽게 변경할 수 있습니다.
코드 예시
좋은 예: 인터페이스를 유형으로 사용
Set<String> s = new LinkedHashSet<>();
나쁜 예: 구체적인 클래스를 유형으로 사용
LinkedHashSet<String> s = new LinkedHashSet<>();
유연성: 코드에 영향을 주지 않고 구현 변경
Set<String> s = new TreeSet<>();
String과 같은 최종 클래스를 사용하는 예
String str = "Hello";
프레임워크 기본 클래스 사용 예
OutputStream output = new FileOutputStream("file.txt");
위 내용은 인터페이스를 통한 항목 참조 객체의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!