2013-07-06 3 views
1

여기에 질문이 있습니다. Java 7 API Collection을 기반으로 한 인터페이스이지만 size()와 같은 구체적인 메소드가 제공됩니다. 나는 그것을 얻지 못한다. 인터페이스는 구현 된 메소드를 어떻게 가지고 있는가? 그것이 추상적 클래스라면 그것은 의미가 있습니다. 안부 인사인터페이스 및 구현 된 메서드

답변

2

컬렉션 인터페이스이지만, 아직은() 크기와 같은 몇 가지 구체적인 방법, 함께 제공됩니다.

이것은 사실이 아닙니다. 이미 알고있는 인터페이스은 계약을 정의하고 그것을 구현하는 클래스에 구현을 남겨 둡니다. 당신이

Collection<String> collection = new ArrayList<String>(); 
System.out.println("Size of the collection is: " + collection.size()); 

같은 것을 참조하는 경우 size() 구현은 ArrayList하지 Collection에 의해 제공되었다 있습니다.

0

java.util.Collection은 구현 된 방법이 없으므로 인터페이스입니다. 여기에 size 메소드의 선언입니다 :

/** 
* Returns the number of elements in this collection. If this collection 
* contains more than <tt>Integer.MAX_VALUE</tt> elements, returns 
* <tt>Integer.MAX_VALUE</tt>. 
* 
* @return the number of elements in this collection 
*/ 
int size(); 
0

는 방법에 대한 구체적인 구현이 없습니다. 당신이 말하는 방법은 size도 구체적인 구현을 가지고 있지 않습니다.

/** 
* Returns the number of elements in this collection. If this collection 
* contains more than <tt>Integer.MAX_VALUE</tt> elements, returns 
* <tt>Integer.MAX_VALUE</tt>. 
* 
* @return the number of elements in this collection 
*/ 
int size(); 
+0

따라서 size() 메서드는 추상 메서드입니다. Collection 인터페이스를 구현하면 추상 메서드를 재정의해야합니다. 그렇습니까? 그러나 더 많은 방법이 있습니다. – ucas

+0

_ 그러나 그와 같은 메소드가 더 있습니다 ._ 구현이있는 메소드를 의미합니까? 그것은 옳지 않을 수 있습니까? 인터페이스는 (일반적으로) 구현을 가진 메소드를 가질 수 없습니다. 기본적으로 인터페이스의 모든 메소드는'abstract'입니다. –

+0

일단 인터페이스를 구현하면 해당 메소드를 상속받습니다. 그런 작업이 완료되면 본질적으로 컬렉션 인 객체에 대한 작업을 수행 할 수 있습니다. 그 사실은 나를 괴롭히는 이유는 그 메소드가 추상으로 주석 처리되지 않기 때문입니다. – ucas