为什么methods returns 接口类型的对象?
Why methods returns object of interface type?
我正在尝试了解界面的工作方式。经过一些研究,我发现接口用于指定 class 必须执行的操作。
我在外部 class 中实现了一个方法(first()
),它将 Position<E>
实例的 return 元素,但我感到困惑的要点是,first()
使用节点 class 中的方法 getNext()
,其中 returns Node<E>
对象,所以为什么我能够 return Position<E>
对象而不是 Node<E>
我什至可以 return Node<E>
来自 first()
方法的对象。
private static class Node<E> implements Position<E> {// Inner Class
private E element;
Node<E> previous;
Node<E> next;
Node(E element, Node<E> previous, Node<E> next) {
this.element = element;
this.previous = previous;
this.next = next;
}
@Override
public E getElement() throws IllegalStateException {
if (next == null)
throw new IllegalStateException("Position no longer valid");
return element;
}
private Node<E> getNext() {
return next;
}
}
外部class方法
@Override
public Position<E> first() {
return header.getNext();
}
由于 Node<E>
实现了 Position<E>
,Node<E>
的每个实例也是 Position<E>
的实例(或者,准确地说,是 class 实现 Position<E>
)。
因此您可以在 return 类型为 Position<E>
.
的方法中 return Node<E>
的实例
why I am able to return Position object instead of Node
因为,Node
实现了 Position
,这意味着 Node
是 Position
的一种类型。因此,Position
可以容纳任何实施它的 class 实例。在您的情况下,它是 Node
class,指的是 getNext
方法,其中 returns Node
类型对象
private Node<E> getNext() {
return next;
}
我正在尝试了解界面的工作方式。经过一些研究,我发现接口用于指定 class 必须执行的操作。
我在外部 class 中实现了一个方法(first()
),它将 Position<E>
实例的 return 元素,但我感到困惑的要点是,first()
使用节点 class 中的方法 getNext()
,其中 returns Node<E>
对象,所以为什么我能够 return Position<E>
对象而不是 Node<E>
我什至可以 return Node<E>
来自 first()
方法的对象。
private static class Node<E> implements Position<E> {// Inner Class
private E element;
Node<E> previous;
Node<E> next;
Node(E element, Node<E> previous, Node<E> next) {
this.element = element;
this.previous = previous;
this.next = next;
}
@Override
public E getElement() throws IllegalStateException {
if (next == null)
throw new IllegalStateException("Position no longer valid");
return element;
}
private Node<E> getNext() {
return next;
}
}
外部class方法
@Override
public Position<E> first() {
return header.getNext();
}
由于 Node<E>
实现了 Position<E>
,Node<E>
的每个实例也是 Position<E>
的实例(或者,准确地说,是 class 实现 Position<E>
)。
因此您可以在 return 类型为 Position<E>
.
Node<E>
的实例
why I am able to return Position object instead of Node
因为,Node
实现了 Position
,这意味着 Node
是 Position
的一种类型。因此,Position
可以容纳任何实施它的 class 实例。在您的情况下,它是 Node
class,指的是 getNext
方法,其中 returns Node
类型对象
private Node<E> getNext() {
return next;
}