-1

インターフェイスを使用する理由

1 つのインターフェースを実装する場合、そのインターフェースのメソッドの定義を作成する必要があります。では、インターフェースを実装するには何が必要でしょうか? クラスに直接メソッドを書くことができます。

ありがとう :)

4

3 に答える 3

1

以下のシナリオを参照してください。

1.class A extends B{
..
..
..
}

A が B を拡張し、新しいクラス C を作成している場合、A を B とともに C を拡張することはできません。go for Interface.

2.class A implements B {
..
..
}

Bに新しいメソッドを追加し、それ(B)が100個のクラスで実装されている場合、すべてのクラスに新しいメソッドを実装するのは難しいため、抽象クラスに進み、スケルトン実装で新しいメソッドを追加します.

さらに詳しいヘルプについては、Joshua Bloch による「 Effective Java 」を参照してください。

于 2012-05-04T06:09:00.810 に答える
0

これはインタビューのような質問です -

長い間周りにあるものをいつ使用するかについての決定は、意見を持っているか、これまたはそのアイデアを支持している多くの人々との議論の1つです. ほとんどの場合に機能する基本的なルールがあると思います。「A は B である」というステートメントを作成できる場合は、抽象クラスと継承を使用します。「A は次のように [doing] できる」というステートメントを作成できる場合はインターフェイスを使用するか、クラスが何であるかを抽象化し、クラスが実行できることをインターフェイスとして使用します。

たとえば、三角形は多角形であると言えますが、三角形が多角形である可能性があると言うのは意味がありません。

とにかく、いつものように、これに対する経験則は次のとおりです。常識を使用してください。場合によっては、上記のルールが逆の場合でも、インターフェースがはるかに適切に適合することがあります。

于 2012-05-04T05:58:00.630 に答える
0

N個のクラスで使用されるメソッドが1つあります。定義が各クラスで異なる場合は、インターフェイスを使用します。

1 つのメソッドが 50 個のクラスで類似していて、別の 50 個のクラスが異なる動作をしているとします。これは、Abstract クラスを使用することを意味します。そこでメソッドを定義します。

また、最初の 50 クラスと残りの 50 クラスで使用すると動作が異なるため、クラスの動作に合わせて既存のメソッドをオーバーライドします。

Interface Graphics
{
   void size();
   void draw();

}

Class Rectangle implements Graphics
{
     void size()
     {
        x=10;
        y=10;
     }
    void draw()
    {
       .....
    }

}
class Triangle implements Graphics
{
   void size()
     {
        x=10;
        y=10;
     }
    void draw()
    {
       .....
    }

}

したがって、両方のクラスで両方のサイズが同じである場合は、abstract を使用します

abstract class Graphics
{
   void size()
     {
        x=10;
        y=10;
     }
    abstract void draw();

}

次に、クラスがこのクラスを拡張する場合、サイズは同様であり、draw() 一部のクラスが異なる位置を必要とする場合にのみサイズをオーバーライドします。

于 2012-05-04T05:54:42.753 に答える