Wiązanie statyczne i wiązanie dynamiczne

Naprawdę jestem zdezorientowany co do dynamicznego wiązania i statycznego wiązania. Przeczytałem, że określenie typu obiektu w czasie kompilacji nazywane jest wiązaniem statycznym, a określenie go w czasie wykonywania nazywane jest wiązaniem dynamicznym.

Co dzieje się z poniższym kodem:

Wiązanie statyczne lub wiązanie dynamiczne?
Jaki rodzaj polimorfizmu to pokazuje?

class Animal
{
    void eat()
    {
        System.out.println("Animal is eating");
    }
}

class Dog extends Animal
{
    void eat()
    {
        System.out.println("Dog is eating");
    }
}

public static void main(String args[])
{
    Animal a=new Animal();
    a.eat();
}

questionAnswers(6)

yourAnswerToTheQuestion