【发布时间】:2021-05-19 20:02:58
【问题描述】:
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 的实现应该是这样的:
- 声明变量 int feet
- 通过声明和初始化public void jump()实现界面移动
- 使用函数 specificJump(feet) 跳转到 int feet 的高度
所以当你尝试调用 jump() 时,你实际上会执行 specificJump(feet)。
问题:为了执行 specificJump(int feet) 我们首先需要调用 jump()。
但是 specificJump(int feet) 需要一个参数,是否可以像我一样在 myAdapter 中声明 int feet?
我的问题是,当您必须在没有参数的情况下调用 jump() 时,如何获得 int feet 值? (使用类适配器模式)
【问题讨论】:
-
大概
feet的值会被传递到myAdapter的构造函数中,或者通过setter 方法设置。newMovement是什么?应该是myAdapter extends mario? -
是的,谢谢,刚刚改了。
-
老实说,这个设计似乎没有任何意义。如果接口的契约定义了跳跃不应高于 1 英尺高,那么让实现违反该契约是没有意义的。此外,您可以在
mario中覆盖jump并跳转到 mario 默认需要跳转的高度,然后还有参数化的jump(int feet)重载。那是任务吗?你真正想解决什么问题?
标签: java oop design-patterns adapter