Questão FC331206
Considere o seguinte trecho de um programa escrito na linguagem Python. class Carro(object): def FaleComigo(self): print "Sou um carro" class Fusca (Carro): def FaleComUmFusca(self
Linguagens de Programação
FGV · 2014
Considere o seguinte trecho de um programa escrito na linguagem Python.
class Carro(object):
def FaleComigo(self):
print "Sou um carro"
class Fusca (Carro):
def FaleComUmFusca(self):
print "Sou um Fusca"
x = Carro()
y = Fusca()
x.FaleComigo()
y.FaleComigo()
No primeiro bloco, o método FaleComigo é definido para a classe Carro, que simplesmente produz a mensagem “Sou um carro” ao ser invocado. Para a classe Fusca, definida no segundo bloco, foi definido o método FaleComUmFusca, que apenas produz a mensagem “Sou um Fusca”. No terceiro bloco, os objetos x e y tornam-se instâncias das classes Carro e Fusca, respectivamente. No quarto bloco, o método FaleComigo é invocado para cada um dos dois objetos, x e y. Ao ser executado, esse programa produz duas linhas na sua tela de saída:
Sou um carro
Sou um carro
A mensagem produzida no comando y.FaleComigo deve-se ao mecanismo de
- abstração.
- associação.
- interface.
- herança.
- polimorfismo.
Mostrar resposta e comentário
Gabarito
D
Comentário do professor
O comportamento observado decorre do mecanismo de herança. Ao declarar class Fusca(Carro):, a classe Fusca torna‑se classe‑filha de Carro e passa a dispor dos métodos definidos na classe‑pai sem que precisem ser reescritos.
Assim, quando se invoca y.FaleComigo() em uma instância de Fusca, o interpretador procura o método na própria classe e, não encontrando, o resolve na superclasse Carro. Isso explica porque é impressa a mensagem definida em FaleComigo.
A herança permite reaproveitamento de código e estabelece uma relação “é‑um” entre classes (um Fusca é um Carro), razão pela qual métodos da classe pai estão disponíveis para as instâncias da classe filha.
Conteúdo do catálogo FC Concursos · Atualizado em