我有2個班。一個是24小時制的時鐘,第二個是第一個的子類,是12小時的時鐘。 要轉換第二課中的新時間,我需要更改第一課的價值。但我不能那樣做。 我說的 「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 2012-01-03 19:30:51
不應該把24小時制延長到12小時制嗎? – 2012-01-03 19:31:23
你應該重新設計你的繼承結構:它嚴重違反了[Liskov替代原則](http://en.wikipedia.org/wiki/Liskov_substitution_principle),因爲12小時制肯定不是* a 24小時制。你應該有一個抽象的基類'Clock',你可以從中得到12-h和24-h時鐘類。 – dasblinkenlight 2012-01-03 19:32:26