Leitura recomendada
Objetivos
Herança
Outro conceito de O.O que vamos aplicar na linguagem Python, é o conceito de herança que pode ser resumido
a um relacionamento é-um em que uma classe herda características de uma classe pai podendo utilizar os
recursos dessa classe e também estendê-la.
A sintaxe para a utilização de herança entre classes é feita da utilizando o nome da classe que
desejamos herdar informada dentro de () como mostrado abaixo:
Sintaxe
class nome_classe_pai:
#atributos
#métodos
class nome_classe_filha(nome_classe_pai) #herança
#atributos
#métodos
Onde
-
Não há diferença na instanciação de um objeto utilizando uma classe que usa o conceito de herança.
Os termos Pai e Filha acima serão utilizados ao longo deste tutorial para facilitar a compreensão.
Exemplo 1
class pai:
x = 1
#métodos omitidos
class filha(pai):
y = 2
#métodos omitidos
Saída
-
Método Construtor e Herança
Em Python, o construtor padrão, sem parâmetros não é invocado automaticamente quando instanciamos
um objeto da classe filha.
Exemplo 2
class pai:
def __init__(self):
print("__init__ pai")
class filha(pai):
def __init__(self):
print("__init__ filha")
ob2 = filha()
Saída
__init__ filha
A chamada ao construtor da classe pai deve ser feita implícitamente como mostrado na sintaxe abaixo:
Sintaxe
class nome_classe_filha:
def __init__(self,parametros)
nome_classe_pai.__init__(self,parametros)
#corpo
Exemplo 3
class pai:
param = 0
def __init__(self,param):
self.param = param
print("__init__ pai")
class filha(pai):
def __init__(self,param):
pai.__init__(self,param)
print("__init__ filha")
obj = filha("Teste")
print(obj.param)
Saída
__init__ pai
__init__ filha
Teste
Acessando métodos da classe pai
Como estamos utilizando herança, uma classe filha tem acesso aos recursos public e protected
da classe pai. Para acesso a esses recursos, utilizamos o nome da classe pai herdade.
Sintaxe
classe_pai.nome_atributo
classe_pai.nome_metodo(argumentos)
Exemplo 4
class pai:
param = 999
def metodo_pai():
print("metodo_pai")
class filha(pai):
def metodo_filha():
print(pai.param)
pai.metodo_pai()
obj = filha
obj.metodo_filha()
Saída
999
Outro conceito O.O que vamos aplicar na linguagem Python, é o conceito de sobrescrita que consiste
em um classe Filha alterar a implementação de um método herdado da classe Pai. Dessa forma, uma
classe Filha pode utilizar uma mesma assinatura de método com comportamento diferente.
Exemplo 5
class pai:
def metodo(self,p): #método para sobrescrever
print("%d" % p) #decimal
class filha(pai):
def metodo(self,q): #método sobrescrito
print("%x" % q) #hexa
obj = pai()
obj.metodo(10)
obj = filha()
obj.metodo(10)
Saída
10
a
Por padrão, qualquer método public, protected e private podem sofrer sobreescrita
quando sua classe for herdada. A linguagem Python não possui recurso para prevenir a sobrescrita.
Histórico de atualizações
- 19/09/2024 - revisão 2 - Correções em descrição de tópicos; ajustes gramaticais; outros ajustes
- 30/08/2024 - revisão 1 - Correção em link de Construtor e Herança
- 20/02/2024 - versão inicial
Os cursos oferecidos nesta página são cursos fornecidos por parceiros. Ao comprar um curso clicando
em seu banner, você está ajudando a manter o projeto TutorialDev vivo. Os sites dos cursos parceiros utilizam cookies.