2014-09-21 1 views
1

HashSet는 인터페이스를 구현합니다. set 인터페이스를 확장합니다. iterable 인터페이스를 확장합니다. HashSet이 Iterable 인터페이스를 구현한다고 말 할 수 있습니까? JVM 런타임 및 클래스로드 측면에서이 모양은 어떻게됩니까? 거기에는 HashSet (모든 Iterable 메소드 포함)이라는 하나의 큰 클래스가 생성 되었습니까?은 구현의 수퍼 클래스로 간주되어 구현 된 인터페이스입니까?

+0

인터페이스는 클래스가 아니므로 인터페이스를 수퍼 클래스라고 부르는 것이 좋습니다. 수퍼 유형은 인터페이스가 유형을 정의하지만 클래스는 정의하지 않으므로보다 정확한 용어입니다. – Bobulous

+0

[Virtual calls] (https://wiki.openjdk.java.net/display/HotSpot/VirtualCalls) 및 [interface calls] (https : //wiki.openjdk.)의 HotSpot (OpenJDK JIT) 구현에 대한 설명서를 참조하십시오. java.net/display/HotSpot/InterfaceCalls). –

답변

2

클래스 A가 인터페이스 X를 구현하고 인터페이스 X가 인터페이스 Y를 확장하면 A는 인터페이스 Y도 구현합니다. 이것이 확장 인터페이스가 작동하는 방법입니다. 다른 인터페이스의로드를 구현하는 경우에도 여전히 하나의 클래스입니다.

인터페이스는 단지 스펙 일 뿐이며, 일부 클래스는 특정 메소드 세트를 제공한다고 선언합니다. 인터페이스가 다른 인터페이스를 확장 할 때,이 인터페이스는 모든 메소드와 추가 된 인터페이스를 통합합니다. 따라서 해당 인터페이스를 구현하는 모든 클래스는 모든 인터페이스 및 해당 수퍼 인터페이스로 지정된 모든 메소드를 제공해야합니다.

그렇습니다. HashSet은 Iterable 인터페이스를 구현합니다. http://docs.oracle.com/javase/7/docs/api/java/util/HashSet.html

관련 문제