class Syn extends Tata {
Položil bych si základní otázku. "Je každý syn tátou?" - odpovím si sám, není. Tady dědičnost prostě nepatří. Pokud se snažíš o to, abys o každém synovi mohl říci, kdo je jeho táta, přidej třídě Syn atribut. Ekvivalentně třídě Tata můžeš přidat atribut děti.
Pravděpodobně jde jen o chybu terminologie a OP měl na mysli předka a potomka.
Je tedy každý potomek předkem?
Ano, v terminologii OOP to tak je, i když se to nepopisuje přímo takto, ale že každá instance potomka je instance předka