Javaを学んでいると、「継承」というキーワードに出会います。
初めて聞くと「難しそう」「どう使うの?」と思ってしまいますよね。
でも、実は継承はとても便利で、Javaを効率よく書くためには欠かせない考え方なんです。
この記事では、**Javaの継承とは何か?どうやって使うのか?具体的にどんなメリットがあるのか?**を、初心者でもすぐに理解できるように、やさしく丁寧に解説します。
✅ この記事でわかること
- Javaにおける「継承」とは何か
- 継承の基本的な書き方とルール
super()
やオーバーライドの意味と使い方- 継承を使うことで得られるメリット
- よくあるつまずきポイントと解決策
- 継承を使った実用的なコード例
🧠 Javaの「継承」とは?
一言で言うと…
**「親クラスの性質や動きを子クラスが引き継ぐ仕組み」**です。
たとえば、次のような関係を考えてみましょう。
- 親クラス(スーパークラス):Animal
- 子クラス(サブクラス):Dog
「動物(Animal)」は「鳴く(speak)」という動きを持っていますが、「犬(Dog)」も「鳴く」ことができますよね?
このように、「犬」というクラスが「動物」というクラスの機能を受け継ぐことを、Javaでは「継承」と呼びます。
📦 継承の基本構文
1 |
// 親クラス<br>public class Animal {<br> public void speak() {<br> System.out.println("動物が鳴きます");<br> }<br>}<br><br>// 子クラス<br>public class Dog extends Animal {<br> public void bark() {<br> System.out.println("ワンワン!");<br> }<br>}<br> |
1 |
public class Main {<br> public static void main(String[] args) {<br> Dog d = new Dog();<br> d.speak(); // → 動物が鳴きます<br> d.bark(); // → ワンワン!<br> }<br>}<br> |
解説:
extends
キーワードを使って、Dog
クラスがAnimal
クラスを継承しています。Dog
はAnimal
のメソッドspeak()
を自動的に使えるようになります。
🔁 オーバーライド(上書き)の使い方
子クラスで、親クラスのメソッドを自分流に書き換えたいときは「オーバーライド(Override)」を使います。
1 |
public class Dog extends Animal {<br> @Override<br> public void speak() {<br> System.out.println("ワンワン!(オーバーライド)");<br> }<br>}<br> |
1 |
Dog d = new Dog();<br>d.speak(); // → ワンワン!(オーバーライド)<br> |
@Override
は「親クラスのメソッドを上書きしていますよ」という印です。
🚀 super() を使って親クラスを呼び出す
子クラスから親クラスのコンストラクタやメソッドを呼びたいときは、super()
を使います。
1 |
public class Animal {<br> public Animal() {<br> System.out.println("Animalが生成されました");<br> }<br>}<br><br>public class Dog extends Animal {<br> public Dog() {<br> super(); // ← これでAnimalのコンストラクタが呼ばれる<br> System.out.println("Dogが生成されました");<br> }<br>}<br> |
1 |
Dog d = new Dog();<br>// 出力:<br>// Animalが生成されました<br>// Dogが生成されました<br> |
🧱 Javaの継承の種類
継承タイプ | 説明 |
---|---|
単一継承 | 子クラスは1つの親クラスしか持てない |
多段継承 | A → B → C と継承が連鎖する |
階層継承 | 1つの親クラスから複数の子クラスが派生 |
多重継承(インターフェイス) | Javaではクラスの多重継承は禁止。ただしインターフェイスで代用可能 |
🎯 継承のメリット
メリット | 内容 |
---|---|
コードの再利用 | 同じ処理を何度も書かなくて済む |
構造の整理 | 共通機能を親クラスにまとめる |
拡張しやすい | 新しい機能の追加がしやすい |
柔軟性が高い | 多態性(ポリモーフィズム)で切り替え可能 |
💡 ポリモーフィズムとは?
ポリモーフィズム(多態性)は、同じ型でも異なる動作を実現できる機能です。
1 |
Animal a1 = new Animal();<br>Animal a2 = new Dog();<br><br>a1.speak(); // → 動物が鳴きます<br>a2.speak(); // → ワンワン!(オーバーライドされたDogのspeak)<br> |
親クラスの変数で、子クラスのインスタンスを扱えるのがポイントです。
⚠️ 注意点と落とし穴
private
なフィールドやメソッドは継承されません- コンストラクタは自動継承されません(
super()
で呼ぶ必要あり) - 多重継承(複数のクラスの継承)はできません
final
クラスやメソッドは継承・オーバーライドできません
📘 具体例:人間クラスと学生クラス
1 |
public class Human {<br> String name;<br><br> public Human(String name) {<br> this.name = name;<br> }<br><br> public void introduce() {<br> System.out.println("私は" + name + "です。");<br> }<br>}<br><br>public class Student extends Human {<br> String school;<br><br> public Student(String name, String school) {<br> super(name);<br> this.school = school;<br> }<br><br> @Override<br> public void introduce() {<br> System.out.println("私は" + name + "で、" + school + "の学生です。");<br> }<br>}<br> |
1 |
Student s = new Student("花子", "サイゼント大学");<br>s.introduce();<br>// → 私は花子で、サイゼント大学の学生です。<br> |
🔧 練習問題
次のような関係を継承で表現してみましょう。
- 親クラス:Product(商品)
- 子クラス:Book(本)
それぞれのクラスに、適切なフィールドとメソッドを追加し、オーバーライドも行ってください。
📚 もっと深く学びたい人へ
継承はJavaの「設計力」を高める技術の一つです。
学びを深めるには、絶対にJavaプログラマーになりたい人へ。 がとても役立ちます。
- クラス設計の基本
- 継承とオーバーライドのベストプラクティス
- 実践的なコードの書き方
が丁寧に解説されています。
🚀 実力を伸ばしたい方へ
「書いてみたけど不安…」「プロに見てほしい…」そんなときは、サイゼントアカデミー が頼りになります。
- Java専門講師のマンツーマンサポート
- コードレビュー&解説付きフィードバック
- 未経験からJavaエンジニアへの転職支援
Javaで確実に結果を出したい人におすすめの学習環境です。
✅ まとめ:継承を理解すればJavaはもっと面白くなる!
要素 | 内容 |
---|---|
継承とは? | 親クラスの機能を子クラスが受け継ぐこと |
書き方 | class 子 extends 親 {} |
応用技術 | オーバーライド、super()、ポリモーフィズム |
メリット | 再利用・整理・拡張・柔軟性が高まる |
継承は、Javaのオブジェクト指向の中でも非常に重要な考え方です。
最初は難しく感じるかもしれませんが、実例を通じて少しずつ慣れていけば、自然と使いこなせるようになります。
絶対にJavaプログラマーになりたい人へ。 で学び、サイゼントアカデミー で実践すれば、Java継承のプロになれること間違いなしです!
あなたのJava学習を心から応援しています!
コメント