Es ist mein erster Beitrag, daher ist es leicht, sich daran zu gewöhnen. Obwohl Java 9 veröffentlicht wurde, denke ich, dass es jetzt Java 8 ist.
Erstellen Sie zunächst eine IF mit der Methode StaticIF und Default.
package java8.staticIfAndDefaultIf;
/**
*Zum Testen von StaticIF und Standardmethoden (Studium von Java8)
* @author komikcomik
*
*/
public interface StaticIF {
/**Dies ist die Standardmethode*/
public default void helloDefault() {
System.out.println("hello Default");
}
/**Es ist eine normale Methode*/
public void hello();
/**Statische Methode*/
public static void helloStatic() {
System.out.println("hello static");
}
}
Nun, es scheint, dass statische Methoden jetzt in IF wie folgt implementiert werden können. Das Folgende ist die Implementierung der obigen statischen IF-Schnittstelle.
package java8.staticIfAndDefaultIf;
/**
*StaticIF-Implementierungsklasse.
* @author komikcomik
*
*/
public class StaticIFImpl implements StaticIF{
@Override
public void hello() {
System.out.println("hello in Impl");
}
}
Übrigens noch einer. Dies hat die Standardmethode überschrieben.
package java8.staticIfAndDefaultIf;
/**
*StaticIF-Implementierungsklasse.
*Dies hat die Standardmethode überschrieben.
* @author komikcomik
*
*/
public class StaticIFImplDefaultOverride implements StaticIF {
@Override
public void hello() {
System.out.println("hello in ImplDefaultOverride");
}
public void helloDefault() {
System.out.println("override default");
}
}
Schließlich habe ich eine Klasse erstellt, um diese beiden Klassen aufzurufen.
package java8.staticIfAndDefaultIf;
/**
*Eine Person, die zwei Klassen aufruft, die StaticIF implementieren.
* @author komikcomik
*
*/
public class StaticIFCaller {
public static void main(String[] args) {
StaticIF staticIF = new StaticIFImpl();
staticIF.hello(); //Es stellt sich heraus, dass es mit StaticIFImpl implementiert wurde.
staticIF.helloDefault(); //Die staticIF-Standardmethode wird angezeigt.
StaticIF.helloStatic(); //Die statische Methode von StaticIF wird angezeigt.
StaticIF staticIF2 = new StaticIFImplDefaultOverride();
staticIF2.hello(); //Es stellt sich heraus, dass es mit StaticIFImplDefaultOverride implementiert wurde
staticIF2.helloDefault(); //Der Inhalt von StaticIF wurde überschrieben und mit StaticIFImplDefaultOverride implementiert.
}
}
Unten ist das Ausführungsergebnis. Das ist wie erwartet.
hello in Impl
hello Default
hello static
hello in ImplDefaultOverride
override default
Ist es nicht möglich, dass die Standardmethode nicht verwendet werden kann, wenn dieselbe Verarbeitung widerstrebend in eine Unterklasse geschrieben wird, die IF erbt? StaticIF schien nicht sehr nützlich zu sein.
Recommended Posts