Gama de Tipo de interfaz de datos

user11837257:

En Java, se utiliza la interfaz de ocultar las implementaciones de los usuarios. Interfaz contiene sólo métodos abstractos y métodos abstractos que no tienen un cuerpo que no puede crear un objeto sin constructor. Algo como esto

public interface ExampleInterface {
}
public class Example implements ExampleInterface {
    private static void main(String[] args) {
        // This is not possible
        ExampleInterface objI = new ExampleInterface();

        // However this is
        ExampleInterface[] arrI = new ExampleInterface[10];
    }
}

Mi pregunta es por qué Java permite crear una gran variedad de objetos de interfaz y en la que alguien podría utilizarlo? Está es una buena práctica de codificación para usarlo o es mejor crear una clase concreta que implemente la interfaz y luego crear una matriz de esa clase.

barredora:

Tenga en cuenta que la creación de una serie de interfaces no es la misma que la creación de un ejemplo de una interfaz. Por lo que permite crear matrices de las interfaces, lo que no implica que también se puede crear instancias de interfaces de ahora.

Vamos a darle ExampleInterfaceun método para el bien de la discusión:

public interface ExampleInterface {
    void foo();
}

Al hacer esto:

ExampleInterface[] arrI = new ExampleInterface[10];

Usted se acaba de crear una matriz de elementos diez que tiene este aspecto:

{ null, null, null, null, null, null, null, null, null, null }

¿Por qué null? Debido a que es el valor por defecto para cualquier tipo de referencia.

Como se puede ver, no hay ningún caso de ExampleInterfacemágicamente creados mediante el uso de esa línea anterior. Para reemplazar esos nulls, usted todavía tiene que utilizar una clase que implementa ExampleInterfaceu obtener una instancia de otro lugar:

arrI[0] = new ExampleInterfaceImplementer();
// arrI[0] = new ExampleInterface(); // this still doesn't work

Al final del día, todavía no sabemos lo que la aplicación de la fooapariencia como por arrI[0]o arrI[1], o array[2], y así sucesivamente, de modo que nada se rompe.

¿Es una buena práctica de codificación para usarlo o es mejor crear una clase concreta que implemente la interfaz y luego crear una matriz de esa clase?

Bueno, no es una mala práctica. A veces, no siempre se puede hacer esto último. ¿Qué pasa si desea almacenar instancias de ambos Ay Bque el implemento ExampleInterface?

Relacionado: ¿Qué significa que "el programa a una interfaz"?

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=229219&siteId=1
Recomendado
Clasificación