JavaRush /Blog Java /Random-ES /¿Por qué se necesitan interfaces?
Павел
Nivel 11

¿Por qué se necesitan interfaces?

Publicado en el grupo Random-ES
¿Por qué se necesitan interfaces? ¿Por qué es necesaria la herencia de interfaz? ¿Por qué se necesita el polimorfismo? Para aquellos que leyeron y entendieron cómo hacer interfaces, pero no entendieron por qué.

Descargo de responsabilidad: en este artículo y en los siguientes, la denominación de clases y métodos se proporcionará en ruso.

Cuando se trata de los principios de la programación orientada a objetos (POO): polimorfismo, herencia y encapsulación, resulta útil utilizar analogías del mundo real. La gran ventaja de la programación orientada a objetos es que podemos simular parte del universo real en un programa. Modelemos a la familia Ivanov: papá , mamá y niño Petya . De papá, Petya heredó el hábito de sorber cuando toma té, y de mamá heredó el hábito de fruncir los labios mientras lee. Si intentamos implementar esta situación en un programa, terminaremos con tres clases:
class Папа
class Мама
class Петя
Papá y mamá tienen hábitos que deben transmitirse a Pete . Los hábitos son acciones de algún tipo, por lo que es mejor implementarlos en el mundo del software como métodos: Papá primero :
class Папа {
public void прихлюпывать() {
System.out.println("Хлюп");
    }
}
Ahora mamá :
class Мама {
public void поджимать() {
System.out.println("Поджать губки");
   }
}
Si hablamos de herencia, entonces es lógico escribir el código así:
class Петя extends Папа, Мама {
@Override
public void прихлюпывать() {
     System.out.println("Хлюп");
   }

@Override
public void поджимать() {
System.out.println("Поджать губки");
    }
}
Es decir, heredar a Petya de papá y mamá al mismo tiempo. Si lo escribe así, el compilador se quejará porque Java no puede implementar la herencia de clases múltiples. Por cierto, es posible en C++, pero no en Java, porque pueden surgir grandes problemas con la herencia múltiple: escriben detalladamente en Internet . ¿Por qué se necesitan interfaces?  - 1Para sortear este “imposible”, Java tiene interfaces. Y para los hábitos crearemos nuestra propia interfaz. Incluso dos: Se verán así:
public interface ПривычкиПапы {
    public void прихлюпывать();
}
public interface ПривычкиМамы {
    public void поджимать();
}
En la interfaz, solo describimos los hábitos, pero no describimos qué hacen específicamente, porque escribiremos la implementación específica en clases. Primero, démosle a papá y mamá sus hábitos legales.
class Папа implements ПривычкиПапы {

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

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

@Override
public void поджимать() {
System.out.println("Поджать губки");
    }
}
Y ahora es absolutamente legal transferir hábitos de papá y mamá a Pete al mismo tiempo.
class Петя implements ПривычкиПапы, ПривычкиМамы {

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

@Override
public void поджимать() {
System.out.println("Поджать губки");
    }
}
Es decir, la implementación múltiple (más a menudo llamada implementación) en Java es bastante posible. ¿Por qué se necesitan interfaces?  - 2El significado de las interfaces ahora debería quedar claro: en Java, puede implementar la herencia múltiple utilizando interfaces. Si desarrollamos más la situación, por ejemplo: después de todo, papá y mamá probablemente tengan hábitos que no le transmitieron a Petya , y Petya también puede tener sus propios hábitos personales. Aprenderá cómo transferir esta vital Santa Bárbara al plano de Java en los siguientes episodios. Este no es el único ejemplo para comprender las interfaces. Si no ha leído los siguientes artículos, asegúrese de leer: Interfaces en Java (si no está abierto, puede salir de su perfil o leer en modo incógnito) Por qué se necesitan las interfaces en Java : implemente todos los ejemplos del artículo aquí y cambie los métodos tanto en las interfaces como en las clases: nombres de métodos, firmas (lo que el método toma como entrada), tipos de salida de los métodos. Comprenda usted mismo: - la diferencia entre implementar una interfaz con una clase y una clase abstracta; - métodos predeterminados.
Comentarios
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION