了解Java接口?

use*_*933 1 java interface

所以我通过大量资源在线查看了Java接口.我相信我对它们有一个很好的了解但是在编程时我有点困惑......

我创建了一个名为A的接口,内部有以下内容......

    public interface A {
    public int sum(int first, int second);
}
Run Code Online (Sandbox Code Playgroud)

然后我创建了一个名为B的类.

public class B implements A {

    public static void main(String [] args){
        int result = sum(3, 5);
    }

    public int sum(int first, int second) {
        int total = first + second;
        return total;
    }

}
Run Code Online (Sandbox Code Playgroud)

现在我想弄清楚的是我如何正确调用/使用方法"sum".在Eclipse中,我收到行"int result = sum(3,5);"的错误 它告诉我要使方法静态.如果我将其设置为静态,则该方法需要在界面中匹配它.但是,我无法在界面中使用静态方法?

感谢任何帮助,感谢您抽出时间阅读我的问题.

SJu*_*n76 5

你遇到的问题不是接口而是static方法.

main是一种static方法.这意味着它没有链接到对象/实例,而是链接到类本身.

由于您要使用sum(实例方法),因此首先需要创建一个对象来调用其方法.

A a = new B();
int result = a.sum(5, 6);
Run Code Online (Sandbox Code Playgroud)

通常,实例方法更多地链接到对象状态,而静态方法更像是非OO语言中的"过程".在这种情况下sum,您的方法将更有意义,因为静态.但是,如果您使用B包装值(状态),并使用sum添加到您的内部状态,这将结束(以更友好的方式).

A a = new B(5);
a.sum(6);
int result = a.getValue();
Run Code Online (Sandbox Code Playgroud)

请注意,这两种方法都是有效的,并且都是用Java编译的,只需选择在每种情况下更有意义的修饰符.