インターフェイスを使用するために実装の代わりに extends キーワードを使用しようとしていますが、それは Java で可能です。
Interface myinterface
{
//methods
}
public class myclass extends myinterface
{
//methods
}
この 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
}
}
クラスは を拡張できませんInterface
。彼らはそれらを実装することしかできません。a だけが別の を拡張Interface
できるように、 an だけが別の を拡張できます。Interface
Class
Class
この 2 つの言葉の目的を教えてください。拡張と実装です。
クラスextends
が属性と動作、つまり継承元のクラスからメソッドを継承する場合。Java では多重継承がサポートされていないため、クラスは 1 つのクラスからのみ拡張できます。
クラスimplements
が動作を提供する場合、つまり、スタブとして定義されたメソッドの実装 (コードなしの署名のみ) がInterface
実装されます。ただし、クラスは複数のインターフェースを実装できます。
Interface
が別のものを拡張する場合、実装を提供する必要がInterface
あるメソッドのリストにメソッドを追加するだけです。Class
いいえ、implements
インターフェイスで使用する必要があります。
ただし、abstract class
絶対に拡張を使用する必要がある場合は、を作成できます。
他の人が最も簡潔に言うと、@Stefan Beike は次のように述べていextends
ますimplements
。必要に応じて、インターフェースとそのクラスの間に抽象クラスを追加することができます。これは、インターフェイスのメソッドの空の実装で行われる場合があり、その場合は、子クラスで目的のメソッドをオーバーライドするだけで済みます。しかし、そうでなければ呼び出される場所を使用することだけが必要な場合は、純粋に抽象クラスにすることができます。implements
extend
extends
implements
class extends class (正解)
クラスがインターフェースを拡張する (誤) => クラスがインターフェースを実装する (正)
インターフェイスはインターフェイスを拡張します (正しい)
インターフェイスはクラスを拡張します (正しくない) (絶対にありえない)