object a = new Dog();
vs
Dog a = new Dog();
In both cases a.GetType() gives Dog. Both
a.GetType()
Dog
Your first line creates a variable of type object.
object
The compiler won't let you treat that as a Dog.