Sejam as seguintes classes Java, que ocupam, cada qual, o s...
Qual classe poderá ser inserida em um projeto, juntamente com as classes acima, sem produzir erros de compilação?
Comentários
Veja os comentários dos nossos alunos
LETRA B:
XP2A, XP1A
XP1A extende a XP01, então não haveria erro de compilação
De acordo com o princípio da substituição de Liskov: "um objeto da SUPERCLASSE deve poder ser substituído por um objeto de SUBCLASSE sem causar problemas''.
Como IP- é subclasse de IPx, e IPx lança XP01 e XP2A, eu preciso que IP trate essas exceções ou declare seu lançamento para as classes inferiores (todas as alternativas são o segundo caso). Como nenhuma alternativa lança XP01 e XP2A diretamente, você pode substituir os objetos de Exceção por outros na linha de herança, desde que estejam ABAIXO na hierarquia.
A - Você não pode substituir um objeto mais especializado por outro mais generalizado e nem deve repetir a mesma exceção.
B - XP1A pode tomar o lugar de XP01, mas não o contrário. Tá certo
C - Você não pode substituir um objeto de superclasse no lugar de um se subclasse.
D - Você não pode substituir um objeto de superclasse no lugar de um se subclasse.
E - Você não pode substituir um objeto de superclasse no lugar de um se subclasse.
Outras alternativas que seriam verdaderias:
*Se IP- só lançasse um dos dois, XP01 ou XP2A
*Se IP não lançasse exceções.
Resumindo
Você só pode apontar para a mesma classe ou para a subclasse que herdou essa classe.
A class IPx aponta pra XP01 e XP2A
Como XP01 é pai da XP1A
Então só vamos poder apontar para XP01 e XP2A ou XP1A e XP2A.
Não temos a primeira opção, mas temos a segunda opção na alternativa B
Clique para visualizar este comentário
Visualize os comentários desta questão clicando no botão abaixo