私は2つのクラスを持っています。 1つは約24時間の時計で、2番目の時計は1番目の時計のサブクラスで、12時間の時計です。 新しい時刻を第2クラスに変換するには、最初のクラスの値を変更する必要があります。しかし、私はそれをすることはできません。 私はあなたはそれが設定されている場合hour
を検証しなければならないサブクラスの変数の値を変更しますか?
class AMPMClock extends Clock {
private boolean pm = false;
public void setHour(int hour) {
if (hour >= 12) {
hour -= 12;
pm = true;
} else {
pm = false;
}
super.setHour(hour);
}
public void setPM(boolean pm){
this.pm = pm;
}
}
を書くことができる "H" 変数 具体的に...
class Clock{
public int h, m , s;
public String a,b,c;
public void setHour(int hour){
this.h = hour;
}
public void setMin(int min){
this.m = min;
}
public void setSec(int sec){
this.s = sec;
}
public void tick(){
if(h != 23){
if(m == 59 && s==59){
m = 0;
s=0;
h++;
}
else if(m != 59 && s == 59){
m++;
s=0;
}
else if (m != 59 && s != 59){
s++;
}
else if(m == 59 && s!=59){
s++;
}
}
else if(h == 23 && m == 59 && s !=59){
s++;
}
else if(h == 23 && m!=59 && s == 59){
s=0;
s++;
m++;
}
else if(h == 23 && m!=59 && s!=59){
s++;
}
else if(h == 23 && m == 59 && s == 59){
s = 0;
m =0;
h = 0;
}
}
public String toString(){
a = "";
b = "";
c = "";
if (h < 10)
a = "0";
if (m <10)
b = "0";
if (s <10)
c = "0";
return a+h+":"+b+m+":"+c+s;
}
}
class AMPMClock extends Clock{
Clock clock2 = new Clock();
public void setAMPM(boolean yes){
if(yes == true){
**clock2.h = clock2.h - 12**;
}
}
}
setAMPMがtrueの場合、h変数を変更します。しかし、私は変わりません!それは私に00:00:00 – user1128538
24時間のクロックを12時間の時計の延長ではないはずですか? –
継承構造を再設計する必要があります.Liskov置換原則(http://en.wikipedia.org/wiki/Liskov_substitution_principle)に厳しい違反をしています。これは、12時間のクロックが間違いなく* 24時間制です。あなたは抽象基本クラス 'Clock'を持っていなければなりません。このクラスから、12時間と24時間の両方のクロッククラスが得られます。 – dasblinkenlight