インターフェイスを使用する理由
1 つのインターフェースを実装する場合、そのインターフェースのメソッドの定義を作成する必要があります。では、インターフェースを実装するには何が必要でしょうか? クラスに直接メソッドを書くことができます。
ありがとう :)
インターフェイスを使用する理由
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 」を参照してください。
これはインタビューのような質問です -
長い間周りにあるものをいつ使用するかについての決定は、意見を持っているか、これまたはそのアイデアを支持している多くの人々との議論の1つです. ほとんどの場合に機能する基本的なルールがあると思います。「A は B である」というステートメントを作成できる場合は、抽象クラスと継承を使用します。「A は次のように [doing] できる」というステートメントを作成できる場合はインターフェイスを使用するか、クラスが何であるかを抽象化し、クラスが実行できることをインターフェイスとして使用します。
たとえば、三角形は多角形であると言えますが、三角形が多角形である可能性があると言うのは意味がありません。
とにかく、いつものように、これに対する経験則は次のとおりです。常識を使用してください。場合によっては、上記のルールが逆の場合でも、インターフェースがはるかに適切に適合することがあります。
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()
一部のクラスが異なる位置を必要とする場合にのみサイズをオーバーライドします。