Перечисления — различия между версиями
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); }
Таким образом можно обращаться к перечислению
Методы работы с перечислениями
Класс
базовый для перечисленийимя
– номер
экземпляр по номеру