Herança: Considere o seguinte programa em Python: class Cachorro: def __init__(self, idade): self.idade = idade class Dalmata(Cachorro): def __init__(self, idade, pedigree): super(Dalmata, self).__init__(idade) self.pedigree = pedigree d = Dalmata(3, True) print(d.idade, d.pedigree) Assinale a alternativa correta:
Considere o seguinte programa em Python:
class Cachorro: def init(self, idade): self.idade = idade
class Dalmata(Cachorro): def init(self, idade, pedigree): super(Dalmata, self).init(idade) self.pedigree = pedigree
d = Dalmata(3, True) print(d.idade, d.pedigree)
Assinale a alternativa correta:
a) A palavra chave “super” na linha 7 é usada para ter acesso global às variáveis do programa.
b) O objeto d é da classe Dalmata e representa um cachorro dalmata de 3 anos sem pedigree.
c) O objeto d é da classe Dalmata, mas não possui as características da classe Cachorro.
d) O programa possui duas classes, e cada classe possui dois atributos cada.
e) O objeto d é da classe Dalmata, que também possui as características de um Cachorro.
Vamos analisar o código:
- Herança
class Dalmata(Cachorro):indica que Dalmata herda de Cachorro. Logo, um objetoDalmatatambém tem (herda) as características/atributos deCachorro.
- Construtor e uso de
super
-
Em
Dalmata.__init__(self, idade, pedigree), a linha:super(Dalmata, self).__init__(idade)chama o construtor (
__init__) da classe paiCachorro, inicializando o atributoself.idade. -
Depois,
self.pedigree = pedigreecria/inicializa o atributo específico deDalmata.
- Instanciação
d = Dalmata(3, True)cria um objeto da classeDalmatacomidade = 3epedigree = True.- Portanto,
print(d.idade, d.pedigree)exibirá3 True.
Analisando as alternativas:
- (a) Falsa:
supernão dá “acesso global” a variáveis; ele acessa métodos/atributos da superclasse. - (b) Falsa:
pedigreeéTrue, então tem pedigree. - (c) Falsa: por herança,
Dalmatapossui sim as características deCachorro. - (d) Falsa: cada classe não tem “dois atributos cada”;
Cachorrodefineidade, eDalmatadefinepedigree(além de herdaridade). - (e) Verdadeira:
déDalmatae também possui características deCachorro.
Alternativa correta: (e).