두 클래스가 있는데 두 번째 클래스가 첫 번째 클래스의 개인 데이터에 액세스하려고합니다. 때로는 그들이 필요하지 않을 것 같다, 내가 정확히 그들이 작동 방법을 몰라,초급 : 인터페이스가있는 클래스를 사용하려고하면 다른 클래스가 확장됩니다.
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에서 사람을 사용하여 *.) : 내가 가기로 결정에도 불구하고 내부 클래스와 함께, 내 질문에 대한 대답은 확장 및 구현의 순서, 감사합니다.
이전 질문에서 이미 말했듯이 Iterator는 GenericDictionary를 확장해서는 안됩니다. 둘 사이에는 * is-a * 연관이 없습니다. 너는 유산을 남용하고있어. 이터레이터에서 사전의 private 멤버에 액세스하려면 표준 JDK 클래스처럼 내부 클래스로 구현하십시오. –
@JBNizet 그리고 아마 이미 언급했듯이 ... 나는 잘 모릅니다. JDK는 나에게 너무 밀집되어있다. 귀하의 의견은 거의 도움이되지 않습니다. 나는 이것이 OK 일 수 없다는 것을 이해하지만, 예를 들면 : .capacity()와 같이 필요하다. 나는 그것 없이는 진행할 수 없다. 내 첫 번째 클래스가 이미 존재하기 때문에 ... 내 유일한 다른 옵션은 매개 변수로 전달하는 것입니다.하지만 이는 직관적이지 않거나 최소한 잘못되었습니다. – Kalec
내부 수업은 무엇인지 알고 있습니까? 그렇지 않다면, "자바 튜토리얼 내부 클래스"에 대한 구글, 그리고 당신은 튜토리얼을 찾을 수 있습니다. 내가 이미 말씀 드렸듯이 IDE에서 HashMap을 강조 표시하고 "소스보기"를 선택하십시오.그런 다음'iterator()'메소드 정의로 가면 예제 구현을 찾을 수있다. 사전을 매개 변수로 반복자의 생성자에 전달하는 것은 여러분보다 훨씬 나은 해결책이며 내부 클래스가 암시 적으로하는 것입니다. 그래서 당신이 내부 클래스를 사용하고 싶지 않다면 그렇게 할 수 있습니다. –