継承は、オブジェクト指向プログラミング(OOP)における中心的な概念であり、効率を向上させるための重要な要素と見なされています。このチュートリアルでは、Javaにおける継承の理解を深めます。アクセス修飾子の使用方法、コンストラクタの扱い方、継承におけるカプセル化の役割について学びます。
主なポイント
- 継承は、クラスのプロパティやメソッドを引き継ぐことを可能にします。
- アクセス修飾子のprivateは変数やメソッドへのアクセスを制限し、protectedは元のクラスから継承したクラス内でのアクセスを拡張します。
- コンストラクタはサブクラスで呼び出され、オブジェクトが正しくインスタンス化されるようにする必要があります。
- インターフェースメソッドは、特定の複数のクラスを持つ場合に一般化して使用できます。
ステップバイステップガイド
アクセス修飾子: protected vs. private
クラスVehicleで変数(例えば色)をprotectedとして宣言すると、派生クラス(例えばAuto)内でその変数を直接使用できます。しかし、変数をprivateと宣言した場合、サブクラスから直接アクセスできません。

具体的には、private変数へのアクセスはsetterおよびgetterを介してのみ可能です。
この例では、private変数farbeにアクセスするためにsetFarbeとgetFarbeを使用する必要があります。

変数がprotectedとして宣言されている場合、Autoクラス内で簡単にアクセスし、値を変更できます。
継承におけるコンストラクタの使用
サブクラスを定義する際には、必ず親クラスのコンストラクタが正しく呼び出されるようにする必要があります。

これにより、Autoオブジェクトを作成する際に色が正しく初期化されます。

サブクラス内で、親クラスのパラメータを適切に渡すコンストラクタを定義することを忘れないでください。
継承とメソッド呼び出し
2つのクラス、VehicleとAutoは、一般的な変数やメソッドの使用を可能にします。Vehicleにメソッドを定義すると、そのメソッドをAutoでも再び記述することなく使用できます。

ここでは、メソッドfahrzeugFarbeAusgebenが呼び出され、getFarbeメソッドによって提供された色の値が出力されます。
メソッドへのアクセスの制限
サブクラスで利用できないメソッドを呼び出そうとすると、コンパイルエラーが発生します。この例では、メソッドgetFarbeを呼び出すにはVehicleオブジェクトを渡す必要があります。

これは実際には、メソッドを呼び出す前にデータ型に適合していることを確認する必要があることを意味します。したがって、あなたは自転車、車、または車両オブジェクトを期待するメソッドに渡すことができます。
静的コンテキストでのインスタンスメソッドの呼び出しの例
静的メソッド(static)では、thisキーワードを使用することはできません。これは特定のインスタンスに関連付けられていないためです。そのような場合、異なるメソッドを使用するか、ロジックを再構築する必要があります。

この呼び出しにより、meinAutoオブジェクトの色が正しく出力されます。
まとめ - Javaにおける継承: 初心者向けガイド
継承は、Javaプログラミングにおいて重要な概念であり、コードのモジュール化と再利用を助けます。このチュートリアルでは、継承に関するアクセス修飾子、コンストラクタ、メソッド呼び出しの基本的な知識を学びました。
よくある質問
サブクラスでprivate変数にアクセスするにはどうすればよいですか?サブクラスではprivate変数に直接アクセスできません。getterおよびsetterメソッドを使用してください。
protectedとprivateの違いは何ですか?protectedはサブクラスおよび同じパッケージ内でのアクセスを許可しますが、privateはクラス内でのみアクセス可能です。
サブクラスでコンストラクタを定義する必要がありますか?はい、親クラスのコンストラクタを変更した場合は、サブクラスでも適切にコンストラクタを定義する必要があります。
親クラスのメソッドをサブクラスで自由にオーバーライドできますか?はい、finalやstaticでマークされていないメソッドは、サブクラスでオーバーライドして特定の動作を実装できます。