2012-11-04 2 views
1

두 클래스가 있는데 두 번째 클래스가 첫 번째 클래스의 개인 데이터에 액세스하려고합니다. 때로는 그들이 필요하지 않을 것 같다, 내가 정확히 그들이 작동 방법을 몰라,초급 : 인터페이스가있는 클래스를 사용하려고하면 다른 클래스가 확장됩니다.

public class GenericDictionary<T> implements GenericDictionary_interface<T> { 

public class Iterator<T> extends GenericDictionary<T> { 

하지만 인터페이스를 가지고 :

은 일반적으로 내가 가진 것입니다.

public class Iterator<T> implements Iterator_interface<T> { 

다른 클래스를 확장하고 인터페이스를 가질 수있는 방법은 무엇입니까? 인터페이스가 필요하지 않습니까? 내 Iterator<T> 클래스의 인터페이스가 저녁 식사 인터페이스에 있어야합니까? 그렇다면 ... 어떻게?

P. 왜 내가 뭘하고있어 날 강의를하지 마십시오

EDIT (일명 내 자신의 물건을 만드는 대신 java.util에서 사람을 사용하여 *.) : 내가 가기로 결정에도 불구하고 내부 클래스와 함께, 내 질문에 대한 대답은 확장 및 구현의 순서, 감사합니다.

+2

이전 질문에서 이미 말했듯이 Iterator는 GenericDictionary를 확장해서는 안됩니다. 둘 사이에는 * is-a * 연관이 없습니다. 너는 유산을 남용하고있어. 이터레이터에서 사전의 private 멤버에 액세스하려면 표준 JDK 클래스처럼 내부 클래스로 구현하십시오. –

+0

@JBNizet 그리고 아마 이미 언급했듯이 ... 나는 잘 모릅니다. JDK는 나에게 너무 밀집되어있다. 귀하의 의견은 거의 도움이되지 않습니다. 나는 이것이 OK 일 수 없다는 것을 이해하지만, 예를 들면 : .capacity()와 같이 필요하다. 나는 그것 없이는 진행할 수 없다. 내 첫 번째 클래스가 이미 존재하기 때문에 ... 내 유일한 다른 옵션은 매개 변수로 전달하는 것입니다.하지만 이는 직관적이지 않거나 최소한 잘못되었습니다. – Kalec

+0

내부 수업은 무엇인지 알고 있습니까? 그렇지 않다면, "자바 튜토리얼 내부 클래스"에 대한 구글, 그리고 당신은 튜토리얼을 찾을 수 있습니다. 내가 이미 말씀 드렸듯이 IDE에서 HashMap을 강조 표시하고 "소스보기"를 선택하십시오.그런 다음'iterator()'메소드 정의로 가면 예제 구현을 찾을 수있다. 사전을 매개 변수로 반복자의 생성자에 전달하는 것은 여러분보다 훨씬 나은 해결책이며 내부 클래스가 암시 적으로하는 것입니다. 그래서 당신이 내부 클래스를 사용하고 싶지 않다면 그렇게 할 수 있습니다. –

답변

2

다른 클래스를 확장하고 인터페이스를 가질 수있는 방법은 무엇입니까?

당신은 다음 implementsextends 첫째 넣어 : 예를 들어

public class Iterator<T> 
    extends GenericDictionary<T> 
    implements Iterator_interface<T> 
{ 

의 JDK에, java.util.ArrayList

public class ArrayList<E> 
extends AbstractList<E> 
implements List<E>, RandomAccess, Cloneable, Serializable 

로 주어진다 (its Javadoc를 참조하십시오.)

1

How can I extend another class and have an interface ? 만약에 당신이 의미하는 경우에, 종류는 어떻게 anothe 연장 할 수 있는가? 인터페이스를 구현하면서.

public class Iterator<T> extends anotherClass implements Iterator_interface<T> { 

동일한 동작을 보이지만 동작이 약간 다른 두 개 이상의 클래스가있을 때 인터페이스를 사용하십시오.

1

다른 클래스가 첫 번째 클래스의 개인 데이터에 액세스하도록하려면 해당 클래스를 내부 클래스로 만들 수 있습니다. 외부 클래스의 개인 멤버에 액세스 할 수 있습니다. 상속은 프로그래밍 세계에서 실제 세계의 문제를 미러링하는 것에 관한 것이고 Iterator extends GenericDictionary은 일반적으로 수행되는 작업이 아닙니다. 인터페이스의 경우 가장 제한이 적으며 어디에서나 사용할 수 있습니다.

+0

나는 정상적인 것이 아니라는 것을 이해하지만, 지금은 내과 수업이 아니라는 것을 알았습니다. 고맙습니다! – Kalec

관련 문제