假设我有以下类/接口:
public Interface stackInt {
public Node pop();
public void push();
}
class Node {
Node next;
int Data;
Node(int n){...}
Node() {next=null, Data=null}
}
class bigNode extends Node {
String Data2;
Double Data3;
Node(int n, String s, Double d) {Data=n; Data2=s; Data3=d}
}
public class Stack implements StackInt {
Node head, tail, next;
Stack(int n) {
....constructor...
}
Stack() {
head=tail=next=null; (() constructor so can be extended)
}
generic pop() and push() implementations;
public String toString() {
//return string concatanateion of all data values
}
}
public class bigStack extends Stack implements StackInt {
//EXACT SAME AS STACK, BUT WITH bigNode instead of Node. bigNode(,,)
different constructor, but for example, the only difference for pop wooud
return bigNode instead of Node.
}
根据良好的OOP设计,我有以下问题:
1) bigStack 是否也应该实现 StackInt,因为它已经扩展了 Stack?2)无论如何不要覆盖所有方法;例如 pop 方法我想返回一个 bigNode 而不仅仅是一个节点(我也想要 Data2 和 Data3 访问),还是所有这些没有完全相同原型/功能的方法都必须被覆盖?
从设计的角度来看,这看起来合理吗?
Node 和 Stack 在一个文件中,bigNode 和 bigStack 在另一个文件中,StackInt 在第三个文件中,然后 main() 在另一个文件中。
main() 在它自己的包中,其余的可能在 com.xxx.DSImpl 中?