<h1>13 on Chapter 3 Barron’s:</h1>
<p>Parrot is extending Bird which means it can use any of the methods in Bird by default just by calling the method. In printname it’s passed a Bird and since Parrot extends Bird, Parrot is-a Bird so parrot2 is fine to be used in that method. Then printBirdCall passes (Parrot)bird2 and it can be casted as a Parrot since it was initialized as “Bird bird2 = new Parrot()” </p>
<p>B is bad because you can’t cast a Bird as a Parrot that was initialized as it was.
C is bad because printBirdCall wants a Parrot and you’re passing a Bird (has to be casted as a Parrot)
D is bad because you can’t cast a Bird initialized like that as a Parakeet.
E is bad because you can’t cast a Parakeet as an owl.</p>