JavaRush /Blogue Java /Random-PT /Por que a herança de interface é necessária?
Павел
Nível 11

Por que a herança de interface é necessária?

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 herança de interface, mas não entendeu o porquê. Da última vez, usando o exemplo da família comum Ivanov, analisamos por que as interfaces são necessárias. Continuamos a digitalizar a família problemática. Cada pessoa tem alguns hábitos que não herdou de ninguém ou não transmitiu a ninguém - seus hábitos pessoais. Nossa tarefa é proporcionar a cada membro da família hábitos únicos. Vamos para o plano Java: precisamos implementar métodos únicos em classes que pertencerão apenas a essas classes. Bem, vá em frente! Esta é Petya:
class Петя implements ПривычкиПапы, ПривычкиМамы {

//это личные Петины привычки
public void ковырятьВНосу () {
System.out.println("Ковырь-ковырь");
    }

//это унаследованные привычки
@Override
public void прихлюпывать() {
     System.out.println("Хлюп");
   }

@Override
public void поджимать () {
System.out.println("Поджать губки");
    }
}
Este é o papai:
class Папа implements ПривычкиПапы {

//это личные Папины привычки
public void чесатьБороду () {
System.out.println("Чешу бороду");
    }

//это переданные привычки
   @Override
    public void прихлюпывать() {
     System.out.println("Хлюп");
   }
}
Esta é a mamãe:
class Мама implements ПривычкиМамы{

//это личные Мамины привычки
public void хлопатьРесницами () {
System.out.println("Хлоп-хлоп");
    }

//это переданные привычки
@Override
public void поджимать() {
System.out.println("Поджать губки");
    }
}
Perfeito! Tudo funciona como deveria! No primeiro artigo foi dito que o programa é um reflexo do mundo real. A propriedade mais interessante da realidade é que ela muda o tempo todo. A família Ivanov não foi exceção: eles tiveram uma filha doce chamada Masha. E ela herdou da mãe o hábito de piscar os cílios e do pai fungar. Precisamos fazer mudanças em nosso programa. Por que a herança de interface é necessária?  - 1Vamos lá, não é tão difícil, o principal é pensar logicamente. Afinal, todos sabem por que as interfaces são necessárias. Agora vamos criar uma interface para os Hábitos da Masha , descrever os métodos clapElashes() e squish() lá , implementá-los na Masha e pronto. E se métodos com o mesmo nome já estiverem implementados em outras interfaces, você poderá fazer isso uma vez. Por que a herança de interface é necessária?  - 2Na verdade, quem sabe quais são os planos da família Ivanov, caso nasça Seryozha , que herdará hábitos do papai, da mãe, do bisavô e de outra pessoa da quarta geração, cada vez criando uma interface, como: interface Hábitos de Seryozha , e aí declarar métodos que já podem ser declarados centenas de vezes em outras interfaces? Em algumas ou três gerações corremos o risco de obter interfaces com um monte de métodos idênticos que já estão descritos em outras interfaces, e se precisarmos mudar o nome de algum hábito (e isso é bem possível - afinal, o mundo está mudando) , então como descobrir esse espaguete, não consigo imaginar. Resta apenas sentar e sonhar com um milagre. Por que a herança de interface é necessária?  - 3Agora, se cada hábito tivesse sua interface. Vamos imaginar:
public interface ПривычкаПрихлюпывать {
    public void прихлюпывать();
}
public interface ПривычкаПоджимать {
    public void поджимать();
}
public interface ПривычкаКовырятьВНосу {
    public void ковырятьВНосу();
}
public interface ПривычкаХлопатьРесницами {
    public void хлопатьРесницами();
}
public interface ПривычкаЧесатьБороду {
    public void чесатьБороду();
}
E então, como no Lego, poderíamos, usando herança múltipla de hábitos individuais, digitar a interface necessária para os hábitos de um membro individual da família. Algo assim:
public interface ПривычкиМамы extends ПривычкаПоджимать, ПривычкаХлопатьРесницами {
    }
public interface ПривычкиПапы extends ПривычкаЧесатьБороду, ПривычкаХлюпать {
    }
public interface ПривычкиПети extends ПривычкаПоджимать, ПривычкаХлюпать,ПривычкаКовырятьВНосу {
    }
public interface ПривычкиМаши extends ПривычкаХлюпать, ПривычкаХлопатьРесницами {
    }
E então simplesmente implemente a interface desejada para a classe desejada, por exemplo, Mom:
class Мама implements ПривычкиМамы{
@Override
public void хлопатьРесницами () {
System.out.println("Хлоп-хлоп");
    }

@Override
public void поджимать() {
System.out.println("Поджать губки");
    }
}
O mesmo poderia ser feito com Papa, Petya e Masha . E então, com a expansão da família Ivanov, não haveria problemas com hábitos, simplesmente os embaralharíamos por herança no nível da interface, como ingredientes em uma salada, e não produziríamos um monte de métodos com o mesmo nome. Eh, sonhos, sonhos... Por que a herança de interface é necessária?  - 4O homem desenhado tem razão, isso é realmente possível - agora a simulação da família Ivanov está salva! Um leitor atento pode fazer a pergunta: "Por que criar interfaces para cada membro da família? Temos um conjunto de ações - implemente-as imediatamente para a classe necessária." Vamos imaginar que em muitos mundos paralelos existem duplos de Petya , e todos os Petyas precisam implementar a interface Hábitos de Petya
interface ПривычкиПети extends ПривычкаПоджимать, ПривычкаХлюпать,ПривычкаКовырятьВНосу

class ПетяВселеннаяХ implements ПривычкиПети
class ПетяВселеннаяY implements ПривычкиПети
// и т.д.
E se não houvesse uma interface comum?
class ПетяВселеннаяХ implements ПривычкаПоджимать, ПривычкаХлюпать,ПривычкаКовырятьВНосу
class ПетяВселеннаяY implements ПривычкаПоджимать, ПривычкаХлюпать,ПривычкаКовырятьВНосу
// и т.д.
Isso resulta em código mais repetitivo. A herança de interface torna o aplicativo mais flexível para alterações, em particular, problemas com repetição de métodos podem ser resolvidos. Observe novamente que a herança múltipla de interfaces é permitida.
Comentários
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION