Java 8ではデフォルトのメソッドを使用して多重継承のテストを実現
テスト内容:
クラスがスーパークラスとインタフェースから同じメソッドを継承するとどうなりますか?
スーパークラスMyClass:
インターフェイス:
テストクラスTest:
結果:
クラスがそのスーパークラスからメソッド(抽象的または具体的)を継承し、そのインタフェースの1つから同じ署名を持つメソッドを継承した場合、クラスはスーパークラスのメソッドを継承し、スーパーインタフェースのメソッドを無視します.
クラス階層を使用してクラスで同じメソッドが使用できない場合、このルールはインタフェースのデフォルトメソッドを代替と見なします.
クラスがスーパークラスとインタフェースから同じメソッドを継承するとどうなりますか?
スーパークラスMyClass:
package insping;
public class MyClass {
public String getString() {
return "MyClass";
}
}
インターフェイス:
package insping;
public interface MyInterface {
default public String getString() {
return "MyInterface";
}
}
テストクラスTest:
package insping;
public class Test extends MyClass implements MyInterface {
public static void main(String[] args) {
System.out.println(new Test().getString());
}
}
結果:
:MyClass
クラスがそのスーパークラスからメソッド(抽象的または具体的)を継承し、そのインタフェースの1つから同じ署名を持つメソッドを継承した場合、クラスはスーパークラスのメソッドを継承し、スーパーインタフェースのメソッドを無視します.
クラス階層を使用してクラスで同じメソッドが使用できない場合、このルールはインタフェースのデフォルトメソッドを代替と見なします.