Aula 14
POO Avançada
🎯 Objetivos
- Herança ("É um...")
- Polimorfismo (Comportamentos diferentes)
- Encapsulamento (
__privado) - Sobrescrita de métodos
🧬 Herança (Inheritance)
Evita copiar código.
Se Animal tem comer(), Cachorro também tem.
class Animal:
def comer(self):
print("Comendo...")
class Cachorro(Animal): # Cachorro herda de Animal
def latir(self):
print("Au!")
Cachorro faz DUAS coisas: come e late.
🎭 Polimorfismo
O mesmo método, várias formas.
class Gato(Animal):
def fazer_som(self):
print("Miau")
class Pato(Animal):
def fazer_som(self):
print("Quack")
Se eu chamar fazer_som(), cada um reage do seu jeito.
🦸♂️ O poder do super()
Chama a classe pai. Essencial no __init__.
class Funcionario:
def __init__(self, nome):
self.nome = nome
class Gerente(Funcionario):
def __init__(self, nome, senha):
super().__init__(nome) # Pai cuida do nome
self.senha = senha # Eu cuido da senha
🔒 Encapsulamento
Protegendo seus atributos.
- Público:
self.nome(Acesso livre) - Protegido:
self._saldo(Só subclasses deviam mexer - Convenção) - Privado:
self.__senha(O Python "esconde" o nome)
Para acessar privados, usamos métodos Getters e Setters (get_senha, set_senha).
🏁 Resumo
- Herança cria hierarquias.
- Polimorfismo traz flexibilidade.
super()reaproveita construtores.- Encapsulamento traz segurança.
Prática! 🚀
Vamos evoluir nossos objetos.