такая проверка называется адт
Нет, не называется. В ADT есть ограничение, что перечисление делается сразу, а теперь тебе еще все дополнительно размазало по коду. Какая будет неожиданность, когда ты запланируешь следующий релиз, посчитаешь сроки, а в самый наивный момент при реализации MyShape : Shape неожиданно узнаешь, что с точки зрени трети кодовой базы MyShape вообще не является Shape