Mega Code Archive

 
Categories / Java Book / 001 Language Basics
 

0094 enum as Class

You can give constructors, add instance variables and methods, and implement interfaces for enum types. When you define a constructor for an enum, the constructor is called when each enumeration constant is created. Each enumeration constant has its own copy of any instance variables defined by the enumeration. // Use an enum constructor, instance variable, and method. enum Direction { South(10), East(9), North(12), West(8); private int myValue; // Constructor Direction(int p) { myValue = p; } int getMyValue() { return myValue; } } public class Main { public static void main(String args[]) { System.out.println(Direction.East.getMyValue()); for (Direction a : Direction.values()) System.out.println(a + " costs " + a.getMyValue()); } } Two restrictions that apply to enumerations. an enumeration can't inherit another class. an enum cannot be a superclass. You can add fields, constructors, and methods to an enum. You can have the enum implement interfaces. enum Coin { PENNY(1), NICKEL(5), DIME(10), QUARTER(25); private final int denomValue; Coin(int denomValue) { this.denomValue = denomValue; } int denomValue() { return denomValue; } int toDenomination(int numPennies) { return numPennies / denomValue; } } public class Main { public static void main(String[] args) { int numPennies = 1; int numQuarters = Coin.QUARTER.toDenomination(numPennies); numPennies = Coin.QUARTER.denomValue(); int numDimes = Coin.DIME.toDenomination(numPennies); numPennies = Coin.DIME.denomValue(); int numNickels = Coin.NICKEL.toDenomination(numPennies); numPennies = Coin.NICKEL.denomValue(); for (int i = 0; i < Coin.values().length; i++) { System.out.println(Coin.values()[i].denomValue()); } } }