interface TestInterface
 {
    public static void square(int a)
    {
        System.out.println("Square is "+a*a);
    }
    public static  void show()
    {
        System.out.println("Default Method Executed");
    }
 }
class TestClass implements TestInterface
{
    public void square(int a)
    {
        System.out.println(a*a);
    }
    public void show()
    {
        System.out.println("Overridden Method");
    }
    public static void main(String args[])
    {
        TestClass d=new TestClass();
        d.square(4);
        TestInterface.square(4);
        TestInterface.show();
        d.show();
    }
}
I have a doubt in my code. I learnt that static methods cannot be overridden in JAVA, but it seems to be working fine here. When i give both default and static keywords together, like this
interface TestInterface
   {
        default static void square(int a)
        {
            System.out.println("Square is "+a*a);
        }
        public static  void show()
        {
            System.out.println("Default Method Executed");
        }
    }
An error crops up as follows: illegal combination of modifiers: static and default
What is the reason for JAVA treating this as an error?