Pregunta

Actualmente estoy trabajando en Code Complete y la palabra "interfaz" sigue apareciendo! Estoy tratando de entender qué es una interfaz. ¿Puedes definir el término? Además, ¿qué constituye realmente una "clase de interfaz"?

¿Fue útil?

Solución

Creo que una buena forma de definir una interfaz es la siguiente

  

Una interfaz es un contrato que especifica un conjunto de métodos, campos y propiedades que estarán disponibles en cualquier objeto de implementación

La implementación real de un idioma a otro puede tener pequeñas diferencias divertidas, pero el principio es válido.

Pensé en agregar interfaces implementadas a la lista anterior, pero lo dejé porque parecía ser demasiado específico para el idioma. Sin embargo, creo que está bien porque el efecto final es casi el mismo. Agregar más interfaces es solo agregar más métodos, campos y propiedades al contrato.

Otros consejos

En general, una interfaz es simplemente "cómo se ve la clase para el resto del mundo".

Por ejemplo, esta clase en Java:

class MyClass {
  private string data;
  private string Foo() {...}
  public void Bar(string s){...}
}
Se podría decir que

tiene solo la función Bar en su interfaz. Internamente tiene algunos otros miembros, pero son privados, por lo que no son visibles para el mundo exterior.

Más comúnmente, las interfaces también son tipos específicos en el lenguaje, por ejemplo, en lo siguiente, MyClass implementa la interfaz IMyClass:

interface IMyClass {
  public void Bar(string s);
}

class MyClass implements IMyClass {
  private string data;
  private string Foo() {...}
  public void Bar(string s){...}
}

La interfaz ahora se expresa en código, de modo que cada vez que se espera una variable de tipo IMyClass, se puede usar un objeto de tipo MyClass, porque implementa la interfaz correcta.

Es una cara externa al mundo. Por lo general, el conjunto de métodos públicos (miembros) que expone.

Técnicamente, sin embargo, serían 2 cosas diferentes

Una interfaz sería un contrato público. por ejemplo,

interface ILogger
{
  void Log(String str);
}

Una clase luego 'implementaría' esta interfaz, de una manera que dice que proporciona esta funcionalidad

class ConsoleLogger : ILogger
{
  public ConsoleLogger() { ... }
  public void Log(String str)
  {
    Console.WriteLine("Console Logger " + str);
  }
  // private stuff
}

Los usuarios de este servicio / interfaz no tienen que preocuparse por cómo se implementa o quién lo implementa. Al depender de una interfaz, la implementación real se puede cambiar a voluntad.

La interfaz de una clase es su "cara pública" que otras clases pueden ver Separa la implementación de la clase de la forma en que interactúa con otras clases. De esta forma, se pueden intercambiar diferentes implementaciones y otras clases no necesitan saber nada sobre lo que hay detrás de la interfaz.

Una interfaz puede incluir tanto datos como miembros de funciones.

La interfaz es la definición del conjunto de métodos que la clase puede implementar. Se utiliza principalmente para el polimorfismo de interfaz.

Una interfaz es como una clase pero no del todo. Tiene rasgos similares, como una clase, pero no es una interfaz. Una interfaz tiene variables y métodos, como la clase, pero los métodos declarados en la interfaz son por defecto abstractos (solo firma de método, sin cuerpo).

http://beginnersbook.com/2013/05/java-interface/

Las interfaces tienen dos definiciones. Depende de en qué contexto se use el término Interfaz.

  1. Una interfaz de clases se refiere a todos los métodos públicos implementados de una clase.
  2. Una interfaz como tipo. es decir, usar la interfaz de palabras clave para declarar una interfaz.

    interface Movable{ 
        moveStraight();
        moveLeft();
        moveRight();
        stop();
    }
    

    Entonces, ahora una clase, digamos, Car puede implementar la interfaz Movable. Esto es lo que se conoce como el contrato. Si la clase Car implementa la interfaz Movable, Car garantiza proporcionar implementaciones para todos los métodos declarados en Movables declaración.

Para concluir, generalmente una interfaz se trata como un tipo (definición 2) en un contexto de programación específico del lenguaje. Encontrará la primera definición en menos ocasiones, generalmente en un contexto teórico o de diseño.

El ejemplo clásico de la vida real de una interfaz son los controles de un automóvil.

La ruptura, el gas y la rueda serían la interfaz. El motor y otros aspectos mechenicos serían la implementación. Estos aspectos mecánicos pueden cambiar, no lo sabríamos porque nuestra interfaz sigue siendo la misma.

Este es el poder de una interfaz, oculta los detalles de implementación para que podamos trabajar en un nivel superior de abstracción. Por lo general, podemos usar directamente la funcionalidad de la interfaz sin preocuparnos de cómo se implementa el código que se encuentra debajo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top