English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
in JavaSchnittstelleÄhnlich wie Klassen, aber sie enthalten nur abstrakte Methoden und Felder, die final und static sind.
甲Statische Methodenwerden statische Methoden mit dem Schlüsselwort static deklariert, die zusammen mit der Klasse in den Speicher geladen werden. Sie können statische Methoden auf das Klassenniveau zugreifen, ohne eine Instanz zu instantiieren.
Von Java8Zunächst können Sie statische Methoden in einer Schnittstelle (mit Körperschaft) verwenden. Sie müssen den Namen der Schnittstelle verwenden, um auf sie zuzugreifen, genau wie auf statische Methoden einer Klasse.
Im folgenden Beispiel definieren wir eine statische Methode in einer Schnittstelle und greifen auf sie von einer Klasse zu, die diese Schnittstelle implementiert.
interface MyInterface{ public void demo(); public static void display() { System.out.println("Dies ist eine statische Methode"); } } public class InterfaceExample{ public void demo() { System.out.println("Dies ist die Implementierung der demo-Methode"); } public static void main(String args[]) { InterfaceExample obj = new InterfaceExample(); obj.demo(); MyInterface.display(); } }
输出结果
This is the implementation of the demo method This is a static method
甲静块是代码使用静态关键字的块。通常,这些用于初始化静态成员。JVM在类加载时在main方法之前执行静态块。
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"); } }
输出结果
Hello this is a static block This is main method
主要是,如果在声明时尚未初始化静态块,则它们将用于初始化类/静态变量。
在接口中声明字段时。必须给它赋值,否则会生成编译时错误。
interface Test{ public abstract void demo(); public static final int num; }
Test.java:3: error: = expected public static final int num; ^ 1 error
当您在接口中为静态最终变量分配值时,将解决此问题。
interface Test{ public abstract void demo(); public static final int num = 400; }
因此,接口中不必包含静态块。