JavaRush /Blogue Java /Random-PT /Por que as interfaces são necessárias?
Павел
Nível 11

Por que as interfaces são necessárias?

Publicado no grupo Random-PT
Por que as interfaces são necessárias? Por que a herança de interface é necessária? Por que o polimorfismo é necessário? Para quem leu e entendeu como fazer interfaces, mas não entendeu o porquê.

Isenção de responsabilidade: neste artigo e nos subsequentes, a nomenclatura das classes e métodos será fornecida em russo.

Quando se trata dos princípios da programação orientada a objetos (OOP): polimorfismo, herança e encapsulamento, é útil usar analogias do mundo real. A grande vantagem do POO é que podemos simular parte do universo real no programa. Vamos modelar a família Ivanov: pai , mãe e menino Petya . Do pai, Petya herdou o hábito de sorver enquanto toma chá, e da mãe, herdou o hábito de franzir os lábios enquanto lê. Se tentarmos implementar esta situação num programa, acabaremos com três classes:
class Папа
class Мама
class Петя
Papai e mamãe têm hábitos que precisam ser transmitidos a Pete . Hábitos são algum tipo de ação - então é melhor implementá-los no mundo do software como métodos: Pai primeiro :
class Папа {
public void прихлюпывать() {
System.out.println("Хлюп");
    }
}
Agora mãe :
class Мама {
public void поджимать() {
System.out.println("Поджать губки");
   }
}
Se estamos falando de herança, é lógico escrever o código assim:
class Петя extends Папа, Мама {
@Override
public void прихлюпывать() {
     System.out.println("Хлюп");
   }

@Override
public void поджимать() {
System.out.println("Поджать губки");
    }
}
Ou seja, herdar Petya de papai e mamãe ao mesmo tempo. Se você escrever assim, o compilador reclamará porque Java não pode implementar herança de múltiplas classes. A propósito, é possível em C++, mas não em Java, porque podem surgir grandes problemas com herança múltipla: eles escrevem detalhadamente na Internet . Por que as interfaces são necessárias?  - 1Para contornar esse “impossível”, Java possui interfaces. E para os hábitos criaremos nossa própria interface. Mesmo dois: eles ficarão assim:
public interface ПривычкиПапы {
    public void прихлюпывать();
}
public interface ПривычкиМамы {
    public void поджимать();
}
Na interface, descrevemos apenas os hábitos, mas não descrevemos o que eles fazem especificamente, pois escreveremos a implementação específica nas classes. Primeiro, vamos mostrar ao papai e à mamãe seus hábitos legais.
class Папа implements ПривычкиПапы {

   @Override
    public void прихлюпывать() {
     System.out.println("Хлюп");
   }
}

class Мама implements ПривычкиМамы{

@Override
public void поджимать() {
System.out.println("Поджать губки");
    }
}
E agora, é absolutamente legal transferir hábitos do pai e da mãe para Pete ao mesmo tempo
class Петя implements ПривычкиПапы, ПривычкиМамы {

@Override
public void прихлюпывать() {
     System.out.println("Хлюп");
   }

@Override
public void поджимать() {
System.out.println("Поджать губки");
    }
}
Ou seja, múltiplas implementações (mais frequentemente chamadas de implementação) em Java são bem possíveis. Por que as interfaces são necessárias?  - 2O significado das interfaces agora deve estar claro - em Java, você pode implementar herança múltipla usando interfaces. Se desenvolvermos ainda mais a situação, por exemplo: afinal, papai e mamãe provavelmente têm hábitos que não transmitiram a Petya , e Petya também pode ter seus próprios hábitos pessoais. Você aprenderá como transferir esta Santa Bárbara vital para o plano Java nos episódios seguintes. Este não é o único exemplo para entender interfaces. Se você não leu os artigos a seguir, leia: Interfaces em Java (se não estiver aberto, você pode sair do seu perfil ou ler no modo de navegação anônima) Por que as interfaces são necessárias em Java - implemente todos os exemplos do artigo aqui e altere os métodos tanto nas interfaces quanto nas classes: nomes dos métodos, assinaturas (o que o método toma como entrada), tipos de métodos de saída. Entenda por si mesmo: - a diferença na implementação de uma interface com uma classe e uma classe abstrata; - métodos padrão.
Comentários
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION