Interface中的公共方法和抽象方法有什么区别?

JAN*_*JAN 1 java interface

请考虑以下界面:

public interface MyInterface {

    public void func1();
    public void func2();
    abstract public void func3();

}
Run Code Online (Sandbox Code Playgroud)

和MyClass类:

public class MyClass implements MyInterface{

    @Override
    public void func1() {
        // TODO Auto-generated method stub

    }

    @Override
    public void func2() {
        // TODO Auto-generated method stub

    }

    @Override
    public void func3() {
        // TODO Auto-generated method stub

    }
}
Run Code Online (Sandbox Code Playgroud)

func2()和之间有什么区别func3()

我必须在我想实现的时候实现这两个MyClass,所以看起来如果我写publicabstract public在接口中没有区别.

谢谢

Hov*_*els 10

Java 7及更早版本:

没有区别,因为所有接口方法都是公共的和"抽象的".这是暗示是否宣布.

Java 8:

同样的规则适用于Java 7,但是,应该注意的是,从Java 8开始,只有非默认方法才是"抽象的".事实上,默认方法允许具有实现.

Java 9:

在Java 9中,我们提供了更大的灵活性,并且还允许使用私有方法.


Sot*_*lis 7

Java语言规范报价:

接口主体中的每个方法声明都是隐式抽象的,因此它的主体始终用分号表示,而不是块.

你问

func2()和func3()之间有什么区别?

除了它们是不同的方法之外,它们的修饰语是相同的.