cannot be instantiated because it is abstract but it's not abstract. public class Solution { public static void main(String[] args) { System.out.println(new Dream().HOBBY.toString()); System.out.println(new Hobby().toString()); } interface Desire { } public static interface Dream { public static Hobby HOBBY = new Hobby(); } static class Hobby implements Dream, Desire { static int INDEX = 1; @Override public String toString() { INDEX++; return "" + INDEX; } } }