English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
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 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.
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á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
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.
interface Test{ public abstract void demo(); public static final int num; }
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.