gpt4 book ai didi

Java - 扩展一个类的类,并且具有一个扩展另一个类的组件的组件

转载 作者:行者123 更新时间:2023-12-01 10:47:57 27 4
gpt4 key购买 nike

澄清一下,这是一个 Stack 和 MinStack。

他们分别使用StackNode和MinStackNode。

我正在尝试让 MinStack 扩展 Stack,让 MinStackNode 扩展 StackNode。但是,当我这样做时,MinStack 使用 StackNode 而不是 MinStackNode。

这是因为Stack使用StackNode,而MinStack继承了它。我希望 MinStack 使用 MinStackNode。

组织:

StackNode -> 堆栈

由下面的类继承

MinStackNode -> MinStack

如有任何帮助,我们将不胜感激。谢谢!

堆栈的代码片段:

public class Stack<E> implements StackInterface<E> {
private StackNode<E> top;
private int size;
public Stack(E data){
StackNode<E> node = new StackNode<E>(data);
this.top = node;
}
public Stack(){
this.top = null;
}
}

最小堆栈:

public class MinStack<E extends Comparable<E>> extends Stack<E>{
private MinStackNode<E> top;
public MinStack(Stack<E> s){
super(s);
}
}

堆栈节点:

public class StackNode<E> {
private E data;
private StackNode<E> next;
public StackNode(E data){
this.data = data;
this.next = null;
}
}

最小堆栈节点:

public class MinStackNode<T> extends StackNode<T> {
private T min;
public MinStackNode(Comparator<T> comparator, T data) {
super(data);
this.min = minimum(this.getNext().getMin(), this.getData());
}
}

由于篇幅原因,我没有包含一些方法,例如 MinStackNode 的最小值。如果需要,我会将它们包括在内。

最佳答案

如果 MinStackNode 继承 StackNode 那么你不必在 MinStackNode 中包含变量 top因为 StackNode 中已经存在有效的声明。但是,当您需要使用任何非继承属性/方法时,您需要将值转换为 MinStackNode

我认为你的问题是,你期望的 MinStackNode 类型实际上是这种类型,但存储在更通用类型的变量中,因此必须进行强制转换。

关于Java - 扩展一个类的类,并且具有一个扩展另一个类的组件的组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34069437/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com