我有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