Public class enumdemo {public Enum trafficlamp {// as an abstract class. If there is only one element, enumeration is a special Singleton mode, red (20) {// each enumeration is treated as a subclass of this abstract class. The constructor with parameters implements the Abstract METHODS @ overridepublic trafficlamp nextlamp () {return green ;}}, Green (30) {@ overridepublic trafficlamp nextlamp () {return yellow ;}}, yellow (5) {@ overridepublic trafficlamp nextlamp () {return red ;}}; private int time; // attribute private trafficlamp (INT time) {// constructor this. time = time;} public abstract trafficlamp nextlamp (); // abstract method @ overridepublic string tostring () {return this. name () + "lamp waiting" + this. time + "seconds" ;}} public static void main (string [] ARGs) {system. out. println (trafficlamp. red); system. out. println (trafficlamp. red. time); system. out. println (trafficlamp. red. nextlamp ());}}