you're checking whether p1 is an instance of Child, but inside the condition, you're trying to cast p to a Child. Assigning a superclass object to a subclass reference is illegal. Although the compiler allows it, the JVM will report a ClassCastException.
Who among you feels worthy enough to be my best friend? Test 1 is to read this tiny ad: