Перечисления — различия между версиями

Материал из Викиконспекты
Перейти к: навигация, поиск
(Новая страница: «Начнем с примера. Раньше класс бинарные операции мы делали вот так public class BinaryOperation { publi...»)
 
Строка 1: Строка 1:
Начнем с примера. Раньше класс бинарные операции мы делали вот так
+
== Пример ==
 +
Раньше класс бинарные операции мы делали вот так
 
  public class BinaryOperation {
 
  public class BinaryOperation {
 
   public int Plus (int a, int b) {
 
   public int Plus (int a, int b) {
Строка 37: Строка 38:
 
   }
 
   }
 
  }
 
  }
 +
abstract public int calculate(int a, int b);
 +
Перечисление может иметь :закрытые конструкторы, поля, методы, абстрактные методы(если они определены в каждом экземпляре).
 +
 +
Перечисление может реализовывать интерфейсы
 +
Также возможно создавать переменные(а не классы).
 +
== Методы работы с перечислениями ==
 +
Класс <tex>Enum –</tex> базовый для перечислений
 +
<tex>name() –</tex> имя
 +
<tex>ordinal()</tex> – номер
 +
<tex>valueOf(Class, name) –</tex> экземпляр по номеру

Версия 21:52, 17 июня 2013

Пример

Раньше класс бинарные операции мы делали вот так

public class BinaryOperation {
  public int Plus (int a, int b) {
     return a + b;
  }
  public int Minus (int a, int b) {
     return a - b;
  }
  public int Division(int a, int b) {
     return a / b;
  }
  public int Times (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);

Перечисление может иметь :закрытые конструкторы, поля, методы, абстрактные методы(если они определены в каждом экземпляре).

Перечисление может реализовывать интерфейсы Также возможно создавать переменные(а не классы).

Методы работы с перечислениями

Класс [math]Enum –[/math] базовый для перечислений [math]name() –[/math] имя [math]ordinal()[/math] – номер [math]valueOf(Class, name) –[/math] экземпляр по номеру