The following simple code snippet uses the interface Named containing two methods namely name() and order() which is being implemented by enum named Days. The enum Days doesn't allow to implement the name() method of its implementing interface. Doing so, causes a compile-time error and although the name() method is not implemented by the enum, it doesn't issue any error.
package enumpkg;
interface Named
{
public String name();
public int order();
}
enum Days implements Named
{
Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday;
public int order()
{
return ordinal()+1;
}
}
final public class Main
{
public static void main(String[] args)
{
System.out.println("Monday = "+Days.Monday.order());
System.out.println("Tuesday = "+Days.Tuesday.order());
System.out.println("Wednesday = "+Days.Wednesday.order());
System.out.println("Thursday = "+Days.Thursday.order());
System.out.println("Friday = "+Days.Friday.order());
System.out.println("Saturday = "+Days.Saturday.order());
System.out.println("Sunday = "+Days.Sunday.order());
}
}
The code works without implementing the name() method in enum. How?
The output is quite obvious as shown below.
Monday = 1
Tuesday = 2
Wednesday = 3
Thursday = 4
Friday = 5
Saturday = 6
Sunday = 7
name()isfinaland can not be overridden.