English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

¿Por qué no hay un bloque de inicialización estático en la interfaz en Java cuando puede tener solo métodos estáticos?

en JavaInterfazSon similares a las clases, pero solo contienen métodos abstractos y campos final y static.

Métodos estáticosse declaran con la palabra clave estática, que se carga junto con la clase en la memoria. Puede acceder a los métodos estáticos usando el nombre de la clase sin necesidad de instanciar la clase.

desde Java8métodos estáticos en las interfaces

Desde Java8Inicialmente, puede usar métodos estáticos en la interfaz (con cuerpo). Necesita llamarlos con el nombre de la interfaz, al igual que con los métodos estáticos de una clase.

Ejemplo

En el siguiente ejemplo, definimos un método estático en la interfaz y accedemos a él desde la clase que implementa la interfaz.

interface MyInterface{
   public void demo();
   public static void display() {
      System.out.println("Esta es un método estático");
   }
}
public class InterfaceExample{
   public void demo() {
      System.out.println("Esta es la implementación del método demo");
   }
   public static void main(String args[]) {
      InterfaceExample obj = new InterfaceExample();
      obj.demo();
      MyInterface.display();
   }
}

Resultados de salida

This is the implementation of the demo method
This is a static method

Bloque estático

Bloque estáticoEs un bloque de código que utiliza la palabra clave estática. Normalmente, se utilizan para inicializar miembros estáticos. El JVM ejecuta los bloques estáticos antes del método main en el momento de la carga de la clase.

public class MyClass {
   static{
      System.out.println("Hello this is a static block");
   }
   public static void main(String args[]){
      System.out.println("This is main method");
   }
}

Resultados de salida

Hello this is a static block
This is main method

Bloque estático en la interfaz

Principalmente, si no se han inicializado los bloques estáticos en el momento de la declaración, se utilizarán para inicializar la clase/Variable estática.

Al declarar campos en una interfaz. Debe asignársele un valor, de lo contrario se generará un error en tiempo de compilación.

Ejemplo

interface Test{
   public abstract void demo();
   public static final int num;
}

Error en tiempo de compilación

Test.java:3: error: = esperado
   public static final int num;
                              ^
1 error

Cuando asigna un valor a una variable estática final en una interfaz, se resolverá este problema.

interface Test{
   public abstract void demo();
   public static final int num = 400;
}

Por lo tanto, no es necesario incluir bloques estáticos en la interfaz.

Te gustará también