开发手册 欢迎您!
软件开发者资料库

Java 8之后实现继承多个接口中方法名重名问题

在Java8之前,不允许多重继承,但是,在Java 8之后,Interfaces可以拥有默认方法(可以自己实现方法),就像抽象类一样。本文主要介绍实现多个接口时,接口方法同名问题。

1、示例接口

public interface Foo {    default void doThat() {        // ...    }}public interface Bar {        default void doThat() {        // ...    }       }

下面将不能编译

public class FooBar implements Foo, Bar{
}

2、重写方法消除歧义

1)调用Bar的doThat方法

public class FooBar implements Foo, Bar{    
    @Override
    public void doThat() {
        Bar.super.doThat();
    }    
}

2)调用Foo的doThat方法

public class FooBar implements Foo, Bar {    @Override    public void doThat() {        Foo.super.doThat();    }}

3)完全重写的doThat方法

public class FooBar implements Foo, Bar {    @Override    public void doThat() {        // ...     }}