Код:
class Burner {
public boolean on = false ;
double power = 0 ;
void burnfire(){
on = true ;
System.out.println("Fire burned");
}
void resetburn() {
on = false;
}
void addpower(double plus) {
if (power > 99){
System.out.println("Too much gaz");
System.out.println("1");
}else
{
System.out.println(on);
if (on = true) {
power = power + plus ;
System.out.println("2");
}
else {
System.out.println("Burn fire") ;
System.out.println("3");
}
}
}
void reducepower(double minus) {
if ((power - minus)< 0) {
System.out.println("There isn't gaz") ;
}
else{
if (on = true) {
power = power - minus ;
}
else {
System.out.println("Burn fire") ;
}
}
}
void resetpower(){
power = 0 ;
}
}
class Oven extends Burner{
boolean rotate = false;
void rotateon() {
rotate = true ;
}
void resetrotate(){
rotate = false ;
}
}
class Range{
Burner burners[] = {new Burner(),new Burner(),new Burner(),new Burner(),new Oven()};
}
public class Task1 {
public static void main(String[] args){
Range Cook = new Range() ;
System.out.println(Cook.burners[0].on);
System.out.println(Cook.burners[0].power);
Cook.burners[0].resetburn() ;
Cook.burners[0].addpower(1.0);
System.out.println(Cook.burners[0].power);
/* Cook.burners[0].burnfire() ; */
/* Cook.burners[4].burnfire() ;*/
}
}
На печать выводит:
Цитата:
false
0.0
false
2
1.0
Вопрос: т.к Cook.burners[0].on = false, то Cook.burners[0].addpower(1.0) должен идти по ветке 3 и не прибавлять значение power. Почему происходит иначе? Как в Java работать с областью видимости переменных?