[Python] orientado a objeto - polimorfismo ( conceito de polimorfismo | uso de polimorfismo | conceito de classe abstrata | exemplo de código )





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

insira a descrição da imagem aqui





2. Aula abstrata




1. Conceito abstrato


A classe pai define apenas um método vazio e o corpo do método passnã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

insira a descrição da imagem aqui

Acho que você gosta

Origin blog.csdn.net/han1202012/article/details/131775526
Recomendado
Clasificación