クラス A から継承するクラス B があります。スーパークラス A は抽象クラスで、1 つの抽象メソッドが含まれています。クラス B に抽象メソッドを実装したくないので、クラス B も抽象として宣言する必要があります。クラスB抽象を宣言すると、2つのことがうまくいきます(プログラムは正しくコンパイルおよび実行されます):
1.) クラスが抽象であるにもかかわらず、クラス B で抽象メソッドを宣言しません。クラスがクラス A の抽象メソッドを継承しているため、これはうまくいくと思います。これは、クラスを抽象として宣言するのに十分です。クラスで直接宣言された他の抽象メソッドは必要ありません。
2.) クラス A で宣言されているのと同じ抽象メソッドをクラス B で宣言します。これはある種のオーバーライド (?) であり、Java でのオーバーライドと同じ意味ではありません (同じヘッダーを使用しますが、異なる実装を提供します)。 )、ここではメソッドの同じヘッダーを再度使用します。
どちらも機能しており、両方とも問題ないかどうか、およびそれらの一部が他のものよりも優先される (より正しい) かどうかはわかりません。2 つの方法は同じですか (Java にとって同じ意味ですか)?
ここでは、いくつかのクラスの例を示します。これにより、意味がより明確になります。
ケース 1.):
public abstract class A {
public abstract String giveSum();
}
public abstract class B extends A {
}
ケース 2.):
public abstract class A {
public abstract String giveSum();
}
public abstract class B extends A {
public abstract String giveSum();
}
よろしく