Код:
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 работать с областью видимости переменных?