问题描述
interface movement{
void jump(); //Jump is 1 Feet high
}
class mario(){
void specificJump(int feet); //Use variable feet to jump higher than 1 Feet
}
public class myAdapter extends mario implements movement{
int feet;
public void jump(){
specificJump(feet);
}
}
movement 是一个具有单一方法的界面,可让您跳 1 英尺高。
mario 是一个带有方法 specificJump(int feet) 的类,可以让你跳到 1 英尺以上。
myAdapter 的实现应该是这样的:
因此,当尝试调用 jump() 时,您实际上会执行 specificJump(feet)。
问题:为了执行 specificJump(int feet) 我们首先需要调用 jump().
但是 specificJump(int feet) 需要一个参数,是否可以像我一样在 myAdapter 中声明 int feet?
我的问题是,当您必须不带参数调用 jump() 时,如何获得 int feet 值? (使用类适配器模式)
解决方法
空跳转(); //跳高1英尺
好吧,如果那是接口契约,那么实现不应该违反它 并允许跳跃高于 1 英尺。
因此,您可能会:
class MovableMario extends Mario implements Movement {
@Override
public void jump() {
specificJump(1);
}
}
任何需要跳跃特定高度的客户端仍然可以使用mario.specificJump(feet)
。
请注意,该设计非常有限,理想情况下,适配器将以装饰器的形式出现并委托给内部 Mario
。