Diretório de artigos
1. Orientação a objetos - polimorfismo
1. O conceito de polimorfismo
"Polimorfismo" refere-se a uma variedade de estados.Quando diferentes objetos do mesmo tipo completam um determinado comportamento, eles obterão estados diferentes;
O polimorfismo é geralmente implementado por meio de herança e reescrita de método, várias subclasses herdam a mesma classe pai,
Esses objetos de subclasse substituem os métodos da classe pai para implementar uma lógica diferente,
Atribua diferentes objetos de subclasse à variável de tipo de classe pai e execute uma lógica diferente ao chamar o método de classe pai substituído e realize o polimorfismo neste momento;
A subclasse substitui o método da classe pai, o que significa que a subclasse pode definir um método com o mesmo nome da classe pai, mas o método de implementação pode ser diferente;
Ao chamar este método através de um objeto de subclasse, o método da subclasse será executado em vez do método da classe pai;
Esse comportamento permite que as subclasses respondam de maneira diferente à mesma mensagem, realizando o polimorfismo;
2. Uso polimórfico
"Polimorfismo" é realizado por meio de relacionamento de herança;
Regras de uso polimórfico:
- A classe pai faz declarações de membros, a maioria das quais são declarações de métodos de membros;
- As subclasses substituem os métodos de membro para fazer o trabalho real;
- Atribua diferentes tipos de objetos de instância de subclasse a várias variáveis de tipo de classe pai;
- Executando o mesmo método do objeto de instância da classe pai, os resultados obtidos são diferentes;
3. Exemplo de código - polimorfismo
No código abaixo,
A classe Animal é a classe pai, que define o comportamento do método make_sound,
A classe Dog e a classe Cat herdam a classe Animal e reescrevem o método make_sound da classe pai Animal,
Para o tipo de variável anotado como tipo Animal, atribua o objeto de instância Animal, o objeto de instância Dog, o objeto de instância Cat, respectivamente,
Quando o método make_sound desses três objetos for chamado, diferentes operações serão executadas;
- O objeto de instância Animal imprime "pronúncia animal";
- O objeto de instância Dog imprime "Uau";
- O objeto de instância Cat imprime "miau";
Exemplo de código:
"""
面向对象 - 多态
"""
class Animal:
name = "Animal"
age = 0
def make_sound(self):
print("动物发音")
class Dog(Animal):
def make_sound(self):
print("汪汪")
class Cat(Animal):
def make_sound(self):
print("喵喵")
animal: Animal = Animal()
animal.make_sound()
print("")
dog: Animal = Dog()
dog.make_sound()
print("")
cat: Animal = Cat()
cat.make_sound()
Resultados do:
Y:\002_WorkSpace\PycharmProjects\pythonProject\venv\Scripts\python.exe Y:/002_WorkSpace/PycharmProjects/HelloPython/hello.py
动物发音
汪汪
喵喵
Process finished with exit code 0
2. Aula abstrata
1. Conceito abstrato
A classe pai define apenas um método vazio e o corpo do método pass
não tem implementação específica;
- A classe pai apenas define quais métodos
- As subclasses são responsáveis por implementar a lógica do método específico
Esse tipo de classe pai é "classe abstrata";
O corpo do método está vazio, ou seja, o método de passagem, chamado de "método abstrato";
Uma classe com "métodos abstratos" é chamada de classe abstrata;
2. Exemplo de código - classe abstrata
Defina a classe abstrata Classe Animal,
Na classe Animal, é definido o método abstrato make_sound method, o corpo do método deste método está vazio, é pass, sem nenhuma lógica;
A subclasse Cat / Dog herda a classe Animal, implementa o método make_sound e executa diferentes operações respectivamente;
Exemplo de código:
"""
面向对象 - 多态
"""
class Animal:
def make_sound(self):
pass
class Dog(Animal):
def make_sound(self):
print("汪汪")
class Cat(Animal):
def make_sound(self):
print("喵喵")
dog: Animal = Dog()
dog.make_sound()
print("")
cat: Animal = Cat()
cat.make_sound()
Resultados do:
Y:\002_WorkSpace\PycharmProjects\pythonProject\venv\Scripts\python.exe Y:/002_WorkSpace/PycharmProjects/HelloPython/hello.py
汪汪
喵喵
Process finished with exit code 0