Перечисления — различия между версиями
| Sergej (обсуждение | вклад)  (→Пример) | Sergej (обсуждение | вклад)   (→Пример) | ||
| Строка 2: | Строка 2: | ||
| Раньше класс бинарные операции мы делали вот так | Раньше класс бинарные операции мы делали вот так | ||
|   public class BinaryOperation { |   public class BinaryOperation { | ||
| − |     public int  | + |     public class Plus  { | 
| + |     public int calculate (int a, int b){ | ||
|        return a + b; |        return a + b; | ||
| + |     } | ||
|     } |     } | ||
| − |     public int  | + |     public class Minus  { | 
| − | + |      public int calculate (int a, int b){ | |
| + |        return a - b; | ||
| + |      } | ||
|     } |     } | ||
| − | + |     public class Division  { | |
| − | + |       public int calculate (int a, int b){ | |
| − | + |         return a / b; | |
| − | + |       } | |
| − | + |     } | |
| + |     public class Times  { | ||
| + |        public int calculate (int a, int b){ | ||
| + |          return a + b; | ||
| + |        } | ||
|     } |     } | ||
|   } |   } | ||
Версия 10:42, 18 июня 2013
Пример
Раньше класс бинарные операции мы делали вот так
public class BinaryOperation {
  public class Plus  {
   public int calculate (int a, int b){
     return a + b;
   }
  }
  public class Minus  {
    public int calculate (int a, int b){
      return a - b;
    }
  }
   public class Division  {
     public int calculate (int a, int b){
       return a / b;
     }
   }
   public class Times  {
      public int calculate (int a, int b){
        return a + b;
      }
  }
}
Проблема была в том, что пригодилось делать много проверок извне для вызова этих функции. Можно сделать гораздо проще и удобнее
 public enum BinaryOperation {
  Plus("+")  {
    public int calculate(int a, int b){
       return a + b;
    }
  }
   Minus("-")  {
    public int calculate(int a, int b){
       return a - b;
    }
  }
  Division("/")  {
    public int calculate(int a, int b){
       return a / b;
    }
  }
   Times("*")  {
    public int calculate(int a, int b){
       return a * b;
    }
  }
}
abstract public int calculate(int a, int b);
Перечисление может иметь :закрытые конструкторы, поля, методы, абстрактные методы(если они определены в каждом экземпляре).
Перечисление может реализовывать интерфейсы Также возможно создавать переменные(а не классы).
 public int Operation  {
    BinaryOperation t;
    int x, y;
    return t.calculate(x,y);
 }
Таким образом можно обращаться к перечислению
Методы работы с перечислениями
Класс базовый для перечислений
имя
– номер
экземпляр по номеру
