こんにちは、ニシオです。
今日はクラスの継承と抽象クラスについて学びました。
1つ目のクラスの継承とはフィールドやメソッドを他クラスに引き継がせることができる機能です。
メンバの継承元のクラスをスーパークラス、継承先のクラスをサブクラスと呼び、スーパークラスが持っているメソッドをサブクラスでも持つことができます。
共通の属性やメソッドを持つクラスが複数ある場合にこれらをまとめることができ、コードの重複などを避けることが可能になります。
長いコードを書くと、メソッドの数が増えてしまい、どのメソッドがどの機能を担当しているのかわかりにくくなり、管理が難しくなります。また、コードが重複してしまうとバグの発生に繋がったりコードの変更をする際にエラーを探すのが困難になります。このような課題を解決するためにクラスの継承を使用します。
2つ目に学んだ抽象クラスでは、これまで学んできた具象クラスと違い、処理内容を記述しないメソッドやそれを持つクラスを定義できます。
抽象クラスの特徴としてオブジェクトを生成できないというものがあり、オブジェクトを生成できないということは単体での利用はできません。では何に使うのかというと、クラス定義に制約を設けたいときに使用します。
例えば複数人で開発を行う時それぞれのプログラマーが似た機能で使用するクラスをそれぞれ作成します。すると、用途は似ているのに名前の違うメソッドがシステム内に複数個生まれてしまいます。これではメソッドの把握が難しく、バグ修正や機能追加の際に修正漏れが発生する危険性が出てきてしまいます。
このような事態を避けるため、ある用途のクラスを定義するときは必ず抽象クラスを継承するというルールを設けます。これによりメソッドの把握などが容易になり、修正や機能追加が容易になります。
抽象クラスは大人数で大規模な開発をする際に真価を発揮する機能だと思っているので、個人で小さいコードを打っている今はあまり便利な実感はありませんが、今後仕事で開発を行う上で使用すると思うので忘れないようにしたいと思います。
ご覧いただきありがとうございました。
次回のブログもよろしくお願いします。