Я бы предположил, что учитель и ученик не подклассы человека, а скорее роли, которые может играть человек.Если вы делаете их подклассами, то вы фактически говорите, что учитель никогда не может быть учеником, и наоборот.Кроме того, если вы переходите от ученика к учителю (или наоборот), вы теряете любые ассоциации и историю для этого объекта.Вместо этого рассмотрим роли.Рассмотрим состав и делегирование вместо наследования в этом примере.Взгляните на книгу Питера Коада: Java Design, чтобы узнать больше об этом.
Кроме того, вы захотите подумать о реализации таблицы, если решите использовать наследование: одну таблицу (с пустыми столбцами для атрибутов подтипа) отдельная таблица или отдельная таблица для суперкласса и отдельные таблицы для подклассов.