Raz, Kod ma błędy składniowe.. Brak podanego modyfikatora, brak rozszerzenia klasy.
Dwa- dlaczego używasz isset a nie operatora porównania === ? Przecież ta zmienna zawsze będzie istniała w momencie kiedy nie ma wartości null.
Nie wiem jak Ty ten kod odpaliłeś, ale zdaje mi się, że raczej go nie testowałeś..
Ten kod tworzy klasę abstrakcyjną z dwoma polami (trzeba nadać modyfikatory dostępu) i nadaje im domyslne wartości.
W klasie Dragon w konstruktorze wywołujesz metode z klasy nadrzędnej ustawiając te wartości i sprawdzasz czy zmienna dangerous nie istnieje.. co jest bzdurą, bo właśnie ustawiłeś już wartości metodą setAnimal() zatem wypisze ci niespodzianka tylko w momencie skasowania wykrzyknika.. albo porównania ===true.