【Java】継承の完全ガイド

Javaプログラミングにおいて、継承はオブジェクト指向プログラミング(OOP)の中心的な概念の一つです。継承を理解することで、コードの再利用性が高まり、プログラムの設計とメンテナンスが容易になります。この記事では、Javaにおける継承の基本から応用までを詳細に解説します。

継承の基本

概念と用語

継承を行うと、新しいクラス(通常「サブクラス」と呼ばれる)が既存のクラス(「スーパークラス」と呼ばれる)の属性(フィールド)と振る舞い(メソッド)を引き継ぐことができます。

基本的な構文

Javaで継承を行うには、extendsキーワードを使用します。

class Animal {
  void makeSound() {
    System.out.println("Some generic animal sound");
  }
}

class Dog extends Animal {
  // Dog クラスは Animal クラスのすべてのフィールドとメソッドを継承します。
}

メソッドのオーバーライド

オーバーライドの必要性

サブクラスはスーパークラスのメソッドをそのまま利用することもありますが、多くの場合、サブクラス独自の振る舞いを定義したいと思うでしょう。そのためには、メソッドのオーバーライドが必要です。

オーバーライドの構文

class Dog extends Animal {
  @Override
  void makeSound() {
    System.out.println("Woof woof");
  }
}

@Overrideアノテーションは、意図的にメソッドをオーバーライドしていることを明示するために使用されます。

superキーワードの活用

superキーワードを使用すると、サブクラスからスーパークラスのメソッドやコンストラクタを呼び出すことができます。

使用例

class Dog extends Animal {
  @Override
  void makeSound() {
    super.makeSound(); // スーパークラスのmakeSound()を呼び出す
    System.out.println("Woof woof");
  }
}

制限と注意点

単一継承の制限

Javaは単一継承しかサポートしていません。つまり、一つのクラスは一つのスーパークラスしか持てません。

finalとprivateの制限

finalキーワードが付けられたクラスは継承できません。また、privateフィールドやメソッドはサブクラスで直接アクセスできません。

まとめ

Javaにおける継承は、コードの再利用性とメンテナンス性を高める強力な機能です。しかし、その力を最大限に活用するには、その概念と構文、制限事項をしっかりと理解する必要があります。この記事が、Javaプログラミングにおける継承の理解に役立つことを願っています。