8 domyślną metodą Java
Java 8 nowych metod Interfejsu.
Mówiąc najprościej, domyślna metoda jest interfejs może być realizowany metodą i nie wymaga implementacji klasy wdrożyć swoje metody.
Właśnie przed nazwą metody, aby dodać domyślną słowa kluczowego wdrożyć metodę domyślną.
Dlaczego ta funkcja?
Po pierwsze, przed interfejsem jest miecz obosieczny, z korzyścią dla abstrakcyjny niż dla konkretnego wada programowania jest to, że gdy trzeba zmodyfikować interfejs, trzeba zmodyfikować całą klasę, która implementuje interfejs, obecny kolekcje Java ramy 8 przed żadnym sposobem foreach, zazwyczaj myślimy o rozwiązaniach w JDK dodawać nowe metody i wdrożenie do odpowiedniego interfejsu. Jednakże, wersja została wydana, to jest w tym samym czasie dodawania nowych metod interfejsu nie wpływa na istniejących rozwiązań. W związku z tym wprowadzenie sposobu domyślnego. Ich celem jest rozwiązanie istniejących modyfikacji i implementacja interfejsu nie jest zgodny z tym problemem.
gramatyka
Składnia domyślna metoda jest następująca:
public interface vehicle { default void print(){ System.out.println("我是一辆车!"); } }
Stwardnienie domyślna metoda
Interfejs ma metodę domyślną, należy rozważyć przypadek, klasa implementuje wiele interfejsów, a te interfejsy mają tę samą metodę domyślnie Poniższe przykłady ilustrują obejście tej sytuacji:
public interface vehicle { default void print(){ System.out.println("我是一辆车!"); } } public interface fourWheeler { default void print(){ System.out.println("我是一辆四轮车!"); } }
Pierwszym rozwiązaniem jest utworzenie własnego domyślnego sposobu aby przesłonić metodę domyślną przepisanie interfejsu:
public class car implements vehicle, fourWheeler { default void print(){ System.out.println("我是一辆四轮汽车!"); } }
Drugim rozwiązaniem może używać bardzo wywołać określony sposób domyślny interfejs:
public class car implements vehicle, fourWheeler { default void print(){ vehicle.super.print(); } }
Statyczna metoda domyślna
Java 8 Inną cechą jest interfejs może zadeklarować (i może zapewnić implementację) metody statycznej. Na przykład:
public interface vehicle { default void print(){ System.out.println("我是一辆车!"); } // 静态方法 static void blowHorn(){ System.out.println("按喇叭!!!"); } }
Domyślna metoda przykładu
Możemy użyć poniższy kod, żeby dowiedzieć się o metody domyślnej, można umieścić plik kodu Java8Tester.java:
public class Java8Tester { public static void main(String args[]){ Vehicle vehicle = new Car(); vehicle.print(); } } interface Vehicle { default void print(){ System.out.println("我是一辆车!"); } static void blowHorn(){ System.out.println("按喇叭!!!"); } } interface FourWheeler { default void print(){ System.out.println("我是一辆四轮车!"); } } class Car implements Vehicle, FourWheeler { public void print(){ Vehicle.super.print(); FourWheeler.super.print(); Vehicle.blowHorn(); System.out.println("我是一辆汽车!"); } }
Realizacja powyższego scenariusza, wyjście jest:
$ javac Java8Tester.java $ java Java8Tester 我是一辆车! 我是一辆四轮车! 按喇叭!!! 我是一辆汽车!