Im trying to understand how inner class works and while experimenting with some simple code i got a error : The method hello cannot be declared static; static methods can only be declared in a static or top level type 
on this code
public class Class1 {
    public static void main(String[] args) {
        Class1 c = new Class1();
        c.show();
    }
    public static void show() { 
        class C2 { 
            static public void hello() { 
                System.out.println("show class");
            }
        }
        C2.hello();
    }
}
and i cant understand why!
 
     
     
     
    