In java8, stiamo usando interface.super.
Considerando i seguenti punti
- Ci sono 2 interfacce ma nessuna delle interfacce eredita da un'altra.
- Esiste una classe di implementazione che eredita entrambe le 2 interfacce.
- Ogni interfaccia ha un metodo predefinito ma il nome è lo stesso per entrambi i metodi.
Ora, in questo scenario, nella classe di implementazione è costringendomi a sovrascrivere il metodo print () predefinito. E nel corpo ho bisogno di usare entrambi
Interface_one.super.print();
o
Interface_two.super.print();
Sono nuovo di Java8, mi piacerebbe capire gli strani comportamenti dell'uso dell'interfaccia.super. Anche l'implementazione del metodo print () che forza le dichiarazioni Interface_one.super.print();
o Interface_two.super.print();
public interface Interface_one {
public void method1();
default void print(){
System.out.println("this is default print in first interface");
}
}
public interface Interface_two {
public void method2();
default void print(){
System.out.println("this is default print in second interface");
}
}
public class ImplementedClass implements Interface_one, Interface_two{
@Override
public void method1() {
System.out.println("Implemented Method 1");
}
@Override
public void method2() {
print();
System.out.println("Implemented Method 2");
}
@Override
public void print() {
Interface_one.super.print();
}
public static void main(String[] args) {
new ImplementedClass().method2();
}
}