抽象クラスには抽象メソッドと具体的なメソッドが含まれている可能性があることを理解しています(つまり、本体の実装を使用)。私の質問は、サブクラスが抽象スーパークラスから具象メソッドを継承/オーバーライドできるかということです。そして第二に、抽象メソッドを実装するのと同じ方法で具体的なメソッドを実装する必要がありますか?
サブクラスは抽象スーパークラスから具象メソッドを継承/オーバーライドできます
それらがfinal
でない場合は、はい、オーバーライドできます。
そして第二に、抽象メソッドを実装するのと同じ方法で具体的なメソッドを実装する必要がありますか?
いいえ、抽象メソッドを実装/オーバーライドするだけで済みます。そうしないと、抽象メソッドは意味がありません。
具体的なメソッドとは、メソッドには完全な定義がありますが、継承されたクラスでオーバーライドできることを意味します。このメソッドを「final」にすると、オーバーライドできなくなります。メソッドまたはクラスを「final」と宣言すると、その実装が完了します。サブクラスの抽象メソッドをオーバーライドする必要があります。そうしないと、サブクラスも抽象クラスになり、抽象として宣言する必要があります。
サブクラスは抽象スーパークラスから具象メソッドを継承/オーバーライドできますか?
サブクラスが親クラスとは異なるパッケージにある場合、サブクラスはinheritpublic
またはprotected
とマークされたすべてのメソッドになります。サブクラスが同じパッケージにある場合、それはinheritsprivate
メソッドを除くすべてのメソッドです。
サブクラスはoverride/implement抽象メソッドである必要があり、final
としてマークされていない場合、具象メソッドをオーバーライド/実装できます。
抽象メソッドを継承するのと同じ方法で具体的なメソッドを継承する必要がありますか?
いいえ。具体的なメソッドを実装する必要はありません。ただし、final
とマークされていない限り、具体的なメソッドをオーバーライドできます。
Javaの具象メソッドは、他の通常のメソッドとまったく同じです。抽象メソッドではないメソッドは、Javaの具象メソッドとして呼び出されます。これらの具象メソッドを実行する場合は、インスタンスを作成します。クラスの(オブジェクト)とその特定のメソッドの呼び出し。
クラスで抽象メソッドを宣言する場合は、クラスの抽象も宣言する必要があります。具象クラスに抽象メソッドを含めることはできません。 Javaでは、抽象クラスをインスタンス化することはできません。抽象クラスには、抽象メソッドと具象メソッドを含めることができます(つまり、本体の実装を使用)。
はい、サブクラスは、プライベート、ファイナル、または静的でない場合、抽象スーパークラスから具象メソッドを継承/オーバーライドします。これらはオーバーライドできます。
いいえ、具体的なメソッドを実装する必要はありません。ただし、finalとマークされていない限り、具体的なメソッドをオーバーライドできます。