Java 使用继承的方法定义方法
我试图通过使用堆栈继承的push方法来定义voidJava 使用继承的方法定义方法,java,generics,constructor,super,inheritance,Java,Generics,Constructor,Super,Inheritance,我试图通过使用堆栈继承的push方法来定义voidadd(T thing)方法,但是Eclipse说返回类型与Vector.add(T)不兼容,并希望我将add(T)的返回类型更改为布尔值,这是没有意义的。 下面是我的代码 public class ListStack<T> extends Stack<T> implements SomeList<T>{ Stack<T> stack1=new Stack<T>(); public
add(T thing)
方法,但是Eclipse说返回类型与Vector.add(T)
不兼容,并希望我将add(T)
的返回类型更改为布尔值,这是没有意义的。
下面是我的代码
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);}
}
您的
堆栈类
必须具有方法add()
,返回类型为boolean堆栈
类扩展向量
类,该类包含boolean add(E)
。我认为Eclipse混淆了Vector
中的add
方法和SomeList
界面中的add
方法。既然您作为成员持有Stack
的实例,就不需要从同一个类继承
删除继承并改用您的成员:
public void add(T something){
stack1.push(something);
}
如果您不再子类Stack
,编译器就不应该再抱怨add(t)
的不同返回类型了
我想你应该调查一下这件事
我会这样做:
接口
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();
}
接口MyList{
公共场所(T事物);
公共空间移除(int pos);
公共无效删除();
公共T-get(int-pos);
公共整数长度();
公共布尔值为空();
}
实施
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...
}
类MyListImpl实现MyList{
堆叠mStack;
公共MyListImpl(){
mStack=新堆栈();
}
公共场所(T型物){
推(东西);
}
公共无效删除(int pos){
//mStack。。。
}
公共无效删除(){
//mStack。。。
}
公共T-get(内部位置){
//返回mStack。。。
}
公共整数长度(){
//返回mStack。。。
}
公共布尔值为空(){
//返回mStack。。。
}
}这就是为什么我们更喜欢组合而不是继承。但后来我在pop()和push上出现了一个错误。因为它们没有定义。是的,这就是结果。但我真的不明白为什么需要提供push/pop和add/take方法,因为它们无论如何都会这样做。你能提供更多关于你想要实现什么的信息吗?我打算实现一个ListStack数据结构,它只使用pop()、push、isEmpty()和peek()的堆栈操作。它实现了一个接口列表,该列表具有以下方法addFront(T thing)
将内容添加到列表的前面remove(int pos)
从某些位置posremoveEnd()
从结构的末尾移除内容get(int pos)
获取结构中特定位置的内容,int length()
返回结构的大小,最后是isEmpty()
如果结构为空则返回true,如果结构为空则返回false。
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...
}