sealed classes and interfaces in java