gpt4 book ai didi

java - 使用继承的方法定义方法

转载 作者:行者123 更新时间:2023-11-30 04:10:38 26 4
gpt4 key购买 nike

我正在尝试定义 void add(T thing)方法使用堆栈的继承推送方法,但 Eclipse 表示返回类型与 Vector<T>.add(T) 不兼容并希望我更改 add(T) 的返回类型为 boolean 值,这没有意义。下面是我的代码

public class ListStack<T> extends Stack<T> implements SomeList<T>{
Stack<T> stack1=new Stack<T>();
public ListStack(){//constructor
super();
stack1=new Stack<T>();
}
//add method
public void add(T something){
this.push(something);}
}

这是我的 SomeList界面

public interface SomeList<T>{
public void add(T something);
public void take(T idx);
.
.
.
}

最佳答案

既然你持有 Stack<T> 的实例,作为成员,您不需要从同一个类继承。

删除继承并使用您的成员:

public void add(T something){
stack1.push(something);
}

如果您不再子类化Stack<T>你的编译器不应该提示 add(T) 的不同返回类型不再了。

<小时/>

我认为你应该看看 adapter pattern .

我会这样做:

界面

interface MyList<T> {
public void addFront(T thing);

public void remove(int pos);

public void removeEnd();

public T get(int pos);

public int length();

public boolean isEmpty();

}

实现

class MyListImpl<T> implements MyList {
Stack<T> mStack;

public MyListImpl() {
mStack = new Stack<T>();
}

public void addFront(T thing) {
mStack.push(thing);
}

public void remove(int pos) {
//mStack...
}

public void removeEnd() {
//mStack...
}

public T get(int pos) {
// return mStack...
}

public int length() {
// return mStack...
}

public boolean isEmpty() {
// return mStack...
}

}

关于java - 使用继承的方法定义方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19675160/

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