You can not override a static method, which youjust saw when you defined the method getRefCount()in Parrot, a sub class of Bird.
When you deleted this method from Parrot, and called
no error occurred because Parrot, the derived class inherited its behaviour (all methods) from its parent class, Bird.
Parrot also inherited the static member variable referenceCount from Bird.
And because the method getRefCount() is defined as static in Bird you were able to invoke the same using the sub class name Parrot, without instantiating Parrot.
Hope this helped you..