1

そこで、Javaインターフェースを理解するために、いくつかのリソースをオンラインで調べました。私はそれらについてよく理解していると思いますが、それらをプログラミングするとき、私は少し混乱しています...

私はAと呼ばれるインターフェースを作成し、その中に次のものがあります...

    public interface A {
    public int sum(int first, int second);
}

次に、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;
    }

}

今私が理解しようとしているのは、メソッド「sum」を適切に呼び出す/使用する方法です。Eclipseでは、「int result = sum(3、5);」という行でエラーが発生します。メソッドを静的にするように指示されています。静的にすると、メソッドはインターフェースでそれと一致する必要があります。しかし、インターフェイスで静的メソッドを使用することはできませんか?

どんな助けでもありがたいです、そして私の問題について読むためにあなたの時間をありがとう。

4

7 に答える 7

5

あなたが抱えている問題はインターフェースではなくstatic方法です。

mainstaticメソッドです。つまり、オブジェクト/インスタンスではなく、クラス自体にリンクされています。

インスタンスメソッドであるを使用するためsum、最初にそのメソッドを呼び出すオブジェクトを作成する必要があります。

A a = new B();
int result = a.sum(5, 6);

通常、インスタンスメソッドはオブジェクトステータスによりリンクされていますが、静的メソッドは非オブジェクト指向言語の「プロシージャ」に似ています。の場合sum、メソッドは静的としてより意味があります。ただし、B値(ステータス)をラップするために使用し、sumを使用して内部ステータスに追加する場合、これは終了します(よりOOフレンドリーな方法で)。

A a = new B(5);
a.sum(6);
int result = a.getValue();

どちらのアプローチも有効であり、どちらもJavaでコンパイルされることに注意してください。それぞれの場合に、より意味のある修飾子を選択するだけです。

于 2013-01-29T23:49:20.207 に答える
2

sum()sumは静的ではなくインスタンスメソッドであるため、メインメソッドから呼び出すことはできません。クラスのインスタンスから呼び出す必要があります。

クラスをインスタンス化する必要があります。

public static void main(String [] args) {
    B b = new B();
    int result = b.sum(3, 5);
}
于 2013-01-29T23:49:14.087 に答える
1
public class B implements A {

    public static void main(String [] args){
        int result = new B.sum(3, 5); 
        // Create an instance of B so you can access 
        // the non-static method from a static reference
        // Or if you want to see the power of the interface...
        A a = new B();
        int result = a.sum(3, 5); 
    }

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

}
于 2013-01-29T23:49:19.660 に答える
1

次のようにBのインスタンスを作成します。

A a =  new B();
    int result = a.sum(3, 5);
于 2013-01-29T23:49:20.477 に答える
0

インターフェイスではなく、静的な問題です。静的メソッドから非静的メソッドを呼び出すことはできません。オブジェクトを作成することで sum メソッドを呼び出すことができます。

お気に入り、

int result = new B.sum(3, 5);

静的メソッド内。

于 2013-01-31T01:46:29.620 に答える
0

問題は非常に単純なようです。sum メソッドを静的にするか、クラス B のインスタンスを作成し、それを使用して sum メソッドを呼び出します。

B b=new B();
int result=b.sum(3,5);

また

sum メソッドの前に static を書くだけです

例:

 public static  int sum(int first, int second)

 {

     int total = first + second;
     return total;

 }
于 2015-08-29T16:33:41.250 に答える