That's correct, that's defined here:
In the enum block. It literally constructs an instance of itself, and allows you to operate on it since the Number enum datatype includes the getVal method.
You can add as many methods as you wish, much like any standard class object. The only real difference is that the enums are enumerated types, so it MUST be one of the options it provides, while the class instantiation doesn't have that limitation.
Also, unlike a class, enums cannot be instanated with the new keyword at all (the enum override forbids the use of public on a constructor scope). This also means that via reflection, it will fail to invoke on a call to .newInstance() since that would be defined as an InstantiationException.
One of the most useful features of the enum in java is that you can switch on an enum. This is especially important for people like me, who are used to being able to switch on strings (java does not allow you to switch on anything non-primitive EXCEPT for enum). It is slightly more bizarre though:
Number n = Number.THREE;
System.out.println("Its a three.");
Note that its not cased on Number.THREE, rather just THREE as its capable of picking out the scope as being that of Number.