Ну, если я не ошибаюсь, то это необхидимо для преобразование типы данных, ведь если один класс будет отличаться от другого, то у вас не получиться преобразовать их и вы прописываете все методы в родительском классе, чтобы реализовать их в дочерных классах и чтобы дочерные были схожи между собой и при необходимости вы могли преобразовать их... По крайней мере я так думаю