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?