У меня есть 2 класса. Один из них составляет около 24 часов, а второй - подкласс первого и 12-часовой. Чтобы преобразовать новое время во втором классе, мне нужно изменить значение первого класса. Но я не могу этого сделать. Я говорю о «ч» переменная В частности ...Изменить значение переменной в подклассе?
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**;
}
}
}
Я хочу изменить переменную h, если setAMPM истинно. но я не изменюсь !! Это дает мне 00:00:00 – user1128538
не должен 24-часовой часы EXTENSION для 12-часовых часов? –
Вы должны перепроектировать свою структуру наследования: она находится в серьезном нарушении принципа замены [Лискова] (http://en.wikipedia.org/wiki/Liskov_substitution_principle), поскольку 12-часовой режим определенно * не * a 24-часовой режим.Вы должны иметь абстрактный базовый класс 'Clock', из которого вы получаете как 12-часовой, так и 24-часовой классы часов. – dasblinkenlight