我有块使用函数执行计算step()
。这些块可以通过 相互连接connect(Block)
。
interface Block {
void connect(Block b);
void step();
}
然而,从一个具体的块实现(例如 in step
)中,应该可以read
从连接的块中:
class ABlockImpl implements Block {
private Block src; // link to the block this block is connected to
public void connect(Block b) {
src = b;
}
public void step() {
double x = src.read(); // XXX src is of type Block and there is no read() in Block
/* ... */
}
public double read() {
return 3.14;
}
}
由于没有read()
in Block
,因此无法编译。对于客户来说,“公共”块接口就足够了,我read
只需要在内部。我可以添加read
到 Block 界面,但对我来说这感觉不对。
由于 Block 有多种不同的实现,我不能src
在ABlockImpl
调用read
.
有没有另一种“隐藏”的方法read
?