我要在两个不同的类中创建一个显示军事和正常时间的时钟,并将时间声明为对象。这样做但现在我需要将clock
类扩展为
其中包含AMPMclock
方法的setAMPM(boolean yes)
。如果setAMPM(true)
它将显示军事时间,如果它是假,它将显示正常时间。我创建了setAMPM
方法
class AMPMclock extends clock
{
boolean setAMPM(boolean yes)
{
return yes;
}
}
class clock
{
private int hours;
private int minutes;
private int seconds;
private boolean yes;
setMin....
setHour...
setSec....
tick() ///moves the clock 1sec
public String toString()
{
if(yes) return String.format("%d:%02d:%02d %s", (hours == 12 || hours == 0)?12 : hours%12, minutes, seconds, (hours < 12)? "AM" : "PM");
else return String.format("%02d:%02d:%02d",hours,minutes,seconds);
//else
}
}
MAIN
AMPMclock clockObject = new AMPMclock();
clockObject.setHour(16);
clockObject.setMin(28);
clockObject.setSec(58);
System.out.println(clockObject.toString());
clockObject.tick();
clockObject.setAMPM(false);
System.out.println(clockObject.toString());
clockObject.tick();
clockObject.setAMPM(true);
System.out.println(clockObject.toString());
clockObject.tick();
System.out.println(clockObject.toString());
但是,我使用clockObject.setAMPM(true)
或clockObject.setAMPM(false)
yes布尔值不会改变,所以我可以在另一种方法中使用它。它始终保持不变......有什么帮助吗? TNX
答案 0 :(得分:3)
setter的想法是封装私有实例变量。您只需返回参数而不修改类的内部状态,这就是您的代码中没有“粘附”的原因。
class Clock {
private boolean useAMPM;
public void setAMPM(boolean useAMPM) {
this.useAMPM = useAMPM;
}
public boolean isAMPM() {
return this.useAMPM;
}
}
答案 1 :(得分:2)
如果您将设置保存在例如ampm实例变量中,则需要以下内容:
boolean ampm = true;
boolean setAMPM(boolean yes)
{
ampm = yes;
return yes;
}
答案 2 :(得分:0)
您可能需要遵循java bean约定吗?
这是你的目标吗?
public class AMPMClock {
private boolean isAMPM;
public void setAMPM(boolean ampmFlag){
this.isAMPM = ampmFlag;
}
public boolean isAMPM(){
return this.isAMPM;
}
}
答案 3 :(得分:0)
您可能需要将其存储在成员变量中......
private boolean useAMPM = false;
public boolean setAMPM (final boolean wantAMPM) {
useAMPM = wantAMPM;
return useAMPM;
}
public void draw () {
…
if (useAMPM) { /* … */ } else { /* … */ }
}
方法的lambda列表中的变量(在定义方法时指定的变量,如wantAMPM
/ yes
)在调用函数时分配,并在函数返回时销毁。 (由于各种原因,将它们全部声明为final
是一个好习惯。)事实上,您也可以在(几乎)任何一对{{1}内创建自动变量在Java程序中,当你到达{ braces }
块的末尾时,它同样会被销毁。
成员变量(属性)在找到它们的对象实例的生命周期内保留。所以当,例如您说}
,然后会创建Clock clockInstance = new Clock ();
,并继续存在,直到clock.useAMPM
被销毁。