JavaRush /Java Blog /Random-IT /Perché sono necessarie le interfacce?
Павел
Livello 11

Perché sono necessarie le interfacce?

Pubblicato nel gruppo Random-IT
Perché sono necessarie le interfacce? Perché è necessaria l'ereditarietà dell'interfaccia? Perché è necessario il polimorfismo? Per coloro che hanno letto e capito come realizzare interfacce, ma non hanno capito perché.

Dichiarazione di non responsabilità: in questo articolo e in quelli successivi, i nomi delle classi e dei metodi verranno forniti in russo.

Quando si tratta dei principi della programmazione orientata agli oggetti (OOP): polimorfismo, ereditarietà e incapsulamento, è utile utilizzare analogie con il mondo reale. Il grande vantaggio dell'OOP è che possiamo simulare parte dell'universo reale in un programma. Modelliamo la famiglia Ivanov: papà , mamma e il ragazzo Petya . Da papà, Petya ha ereditato l'abitudine di bere il tè e da mamma ha ereditato l'abitudine di stringere le labbra durante la lettura. Se proviamo a implementare questa situazione in un programma, ci ritroveremo con tre classi:
class Папа
class Мама
class Петя
Papà e mamma hanno abitudini che devono essere trasmesse a Pete . Le abitudini sono azioni di qualche tipo, quindi è meglio implementarle nel mondo del software come metodi: Papà prima :
class Папа {
public void прихлюпывать() {
System.out.println("Хлюп");
    }
}
Adesso mamma :
class Мама {
public void поджимать() {
System.out.println("Поджать губки");
   }
}
Se parliamo di ereditarietà, è logico scrivere il codice in questo modo:
class Петя extends Папа, Мама {
@Override
public void прихлюпывать() {
     System.out.println("Хлюп");
   }

@Override
public void поджимать() {
System.out.println("Поджать губки");
    }
}
Cioè, ereditare Petya da papà e mamma allo stesso tempo. Se lo scrivi in ​​questo modo, il compilatore si lamenterà perché Java non può implementare l'ereditarietà di classi multiple. A proposito, è possibile in C++, ma non in Java, perché con l'ereditarietà multipla possono sorgere grossi problemi: scrivono in dettaglio su Internet . Perché sono necessarie le interfacce?  -1Per aggirare questo “impossibile”, Java dispone di interfacce. E per le abitudini creeremo la nostra interfaccia. Anche due: appariranno così:
public interface ПривычкиПапы {
    public void прихлюпывать();
}
public interface ПривычкиМамы {
    public void поджимать();
}
Nell'interfaccia abbiamo descritto solo le abitudini, ma non abbiamo descritto cosa fanno nello specifico, perché scriveremo l'implementazione specifica nelle classi. Innanzitutto, diamo a papà e mamma le loro abitudini legali.
class Папа implements ПривычкиПапы {

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

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

@Override
public void поджимать() {
System.out.println("Поджать губки");
    }
}
E ora è assolutamente legale trasferire le abitudini da papà e mamma a Pete allo stesso tempo
class Петя implements ПривычкиПапы, ПривычкиМамы {

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

@Override
public void поджимать() {
System.out.println("Поджать губки");
    }
}
Cioè, l'implementazione multipla (più spesso chiamata implementazione) in Java è del tutto possibile. Perché sono necessarie le interfacce?  - 2Il significato delle interfacce ora dovrebbe essere chiaro: in Java è possibile implementare l'ereditarietà multipla utilizzando le interfacce. Se sviluppiamo ulteriormente la situazione, ad esempio: dopotutto, papà e mamma probabilmente hanno abitudini che non hanno trasmesso a Petya , e Petya può anche avere le sue abitudini personali. Imparerai come trasferire questa vitale Santa Barbara sull'aereo di Java nei seguenti episodi. Questo non è l'unico esempio per comprendere le interfacce. Se non hai letto i seguenti articoli, assicurati di leggere: Interfacce in Java (se non sono aperte, puoi uscire dal tuo profilo o leggere in modalità di navigazione in incognito) Perché le interfacce sono necessarie in Java : implementa tutti gli esempi dell'articolo qui e modifica i metodi sia nelle interfacce che nelle classi: nomi dei metodi, firme (cosa prende il metodo come input), tipi di metodi di output. Comprendi da solo: - la differenza nell'implementazione di un'interfaccia con una classe e una classe astratta; - metodi predefiniti.
Commenti
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION