0

インターフェイスを使用するために実装の代わりに extends キーワードを使用しようとしていますが、それは Java で可能です。

Interface myinterface
{
     //methods
}

public class myclass extends myinterface
{
    //methods
}

この 2 つの言葉の目的を教えてください。拡張と実装です。クラスが他のクラスからクラスを継承するために実装キーワードを使用しない理由

4

7 に答える 7

2

インターフェイスは拡張できませんが、実装されています。インターフェイスには、定数、メソッド シグネチャ、および入れ子になった型のみを含めることができます。つまり、モデルの抽象化のみを表すか、単に定数のリストを含めることができます。

インターフェイスは継承をサポートします。たとえば、次のことができます。

public interface InterfaceA extends InterfaceB

本当にクラスから拡張していくつかの抽象メソッドを持ちたい場合は、抽象クラスを次のように使用できます。

public abstract class AbstractA {
  public abstract void myAbstractMethod;
}

public class A extends AbstractA {
  @Override 
  public abstract void myAbstractMethod {
       // your code
  }
}
于 2013-10-09T14:36:38.737 に答える
1

クラスは を拡張できませInterface彼らはそれらを実装することしかできません。a だけが別の を拡張Interfaceできるように、 an だけが別の を拡張できます。InterfaceClassClass

この 2 つの言葉の目的を教えてください。拡張と実装です。

クラスextendsが属性と動作、つまり継承元のクラスからメソッドを継承する場合。Java では多重継承がサポートされていないため、クラスは 1 つのクラスからのみ拡張できます。

クラスimplementsが動作を提供する場合、つまり、スタブとして定義されたメソッドの実装 (コードなしの署名のみ) がInterface実装されます。ただし、クラスは複数のインターフェースを実装できます。

Interfaceが別のものを拡張する場合、実装を提供する必要がInterfaceあるメソッドのリストにメソッドを追加するだけです。Class

于 2013-10-09T14:29:16.573 に答える
1

いいえ、implementsインターフェイスで使用する必要があります。

ただし、abstract class絶対に拡張を使用する必要がある場合は、を作成できます。

于 2013-10-09T14:29:42.700 に答える
0

他の人が最も簡潔に言うと、@Stefan Beike は次のように述べていextendsますimplements。必要に応じて、インターフェースとそのクラスの間に抽象クラスを追加することができます。これは、インターフェイスのメソッドの空の実装で行われる場合があり、その場合は、子クラスで目的のメソッドをオーバーライドするだけで済みます。しかし、そうでなければ呼び出される場所を使用することだけが必要な場合は、純粋に抽象クラスにすることができます。implementsextendextendsimplements

于 2013-10-09T14:50:04.763 に答える
0

class extends class (正解)

クラスがインターフェースを拡張する (誤) => クラスがインターフェースを実装する (正)

インターフェイスはインターフェイスを拡張します (正しい)

インターフェイスはクラスを拡張します (正しくない) (絶対にありえない)

于 2018-10-03T11:56:58.067 に答える