Fiquei com uma leve dúvida do porquê do instrutor ter implementado o método imprime() na classe mãe 'Programa'.
Achei que o método seria sobrescrito nas classes filhas assim como em Java (@Override). Porém foi implementado o mesmo método nas classes filhas... Ou seja, o método imprime() na classe mãe não serviu de nada, tanto é que, é possível excluí-lo e o código continua compilando.