私は Java の初心者で、記事や本を読んだり、YouTube ビデオを見たりして学んでいます。最近、クラスと抽象クラスという用語に出くわしましたが、それらが同じものかどうかは本当にわかりません。実際にそれらを比較した人は誰もいないようです。
私の質問は: それらは同じですか? そうでない場合、違いは何ですか?ありがとうございました!
私は Java の初心者で、記事や本を読んだり、YouTube ビデオを見たりして学んでいます。最近、クラスと抽象クラスという用語に出くわしましたが、それらが同じものかどうかは本当にわかりません。実際にそれらを比較した人は誰もいないようです。
私の質問は: それらは同じですか? そうでない場合、違いは何ですか?ありがとうございました!
Aclass
と aabstract class
は微妙な違いがあります。
aclass
はインスタンス化してオブジェクトとして使用できますが、 aabstract class
はインスタンス化できません。
を使用しabstract class
て、共通クラスの一部の動作を抽象化します。
また、abstract class
定義されているだけで実装されていない抽象メソッドを持つことができるのは a だけです。実装は のサブクラスで行われabstract class
ます。
他にもたくさんありますが、これは単純な答えには多すぎます。
この状況でクラスを使用する理由abstract
は、基本クラスを継承するすべての人に抽象doInit
メソッドをオーバーライドさせるためです。クラスとメソッドが抽象化されていないと、そうすることを忘れる可能性があり、コンパイラはそれらをキャッチできません。
この実用的な目的に加えて、抽象クラスは、設計のアイデアをコードの読者に伝える強力な方法を提供します。抽象クラスは、モデリングしている単一の概念を実装するのではなく、内部のメソッドが関連するクラスのグループに共通の実装を提供することを読者に伝えます。多くの場合、読者に意図を伝えることは、正しいコードを書くことと同じくらい重要です。
Java では、抽象クラスを Abstract... と呼ぶのが通例です。あなたの例では、AbstractParent になります。
public abstract class Parent {
public void init() {
doInit();
}
public abstract void doInit();
}
public class Child extends Parent {
public void doInit() {
// implementation
}
}
抽象クラスは、抽象メソッドを含むクラスです。抽象メソッドは、実装なしで宣言されるメソッドです。よく見る場所は ここ
抽象クラスは直接インスタンス化できないため、使用するにはサブクラス化する必要があります。詳細については、ドキュメントを参照してください。