So the rule states that if B is a subclass of A, then when an object of type A is expected, B will do.
Therefore if I were to have a non-static method in superclass Animals
and were to call it using an object of subclass Dog
it would function normally e.g. Dog rexy = new Dog();
-> rexy.someMethodFromAnimals();
. Then, what benefit do I get from making the static type of that object Animals
e.g. Animals rexy = new Dog();
. What would this enable?