【超やさしく解説】Javaの継承を「身近な例」でスッキリ理解!
こんにちは。ゆうせいです。
「継承」って言われると、どうしても「プログラミングっぽい」イメージで難しく感じちゃいますよね。でも、実は私たちの日常にも継承の考え方ってたくさんあるんです!
今回は、Javaの標準APIの中から、「誰でも使ったことがある身近なクラス」で、継承がどんなふうに使われているのか見てみましょう。
「文字列」は身近な例の宝庫:String クラスと Object クラス
Javaのプログラムで必ず登場すると言ってもいいクラスがあります。それが…
String str = "こんにちは";
この String クラス、実は Javaのすべてのクラスの親である Object クラスを継承しています!
public final class String extends Object
H3: Objectクラスとは?
Object クラスは、Javaで作られるすべてのクラスの「ひいおじいちゃん」みたいな存在です。
たとえば、String や Integer、ArrayList など、Javaのほとんどのクラスは Object から継承されています。
この Object には、こんなメソッドがあります:
| メソッド名 | 説明 |
|---|---|
toString() | そのオブジェクトを文字で表す |
equals() | 2つのオブジェクトが等しいかどうかを調べる |
hashCode() | オブジェクトのハッシュ値を返す |
H3: String クラスが受け継いでいる機能
例えば、toString() は本来 Object クラスで定義されているメソッドですが、String クラスでは「文字列としての意味を持つように」中身が書き換えられています(これを「オーバーライド」と言います)。
String str = "こんにちは";
System.out.println(str.toString()); // 結果:こんにちは
このように toString() をわざわざ呼び出さなくても、System.out.println(str); と書けば中で toString() が使われます。
H3: 例え話でイメージしよう!
Objectクラスは「すべての家電の共通マニュアル」みたいなものです。Stringクラスは「テレビ」。でも、そのテレビは「使い方」や「機能(toStringなど)」がテレビ用にカスタマイズされているんです。
だから、家電としての共通動作(電源オン・オフ)は使えるけど、表示機能はテレビ独自、みたいな感じ。
もうひとつの身近な例:Integer クラス
数字もよく使いますよね?
Integer num = 10;
この Integer もまた、Object クラスを継承しています。
public final class Integer extends Number
そして、Number クラス自体が Object を継承しています。
つまりこんな階層:
Object(大元)
↑
Number(数値の親クラス)
↑
Integer(整数)
この構造のおかげで、Javaでは int でも float でも double でも「数値」として一括で扱えるのです!
「継承」があるからこそ、便利になる!
継承があると、こういうことができます:
- どんな型でも「toString()」を呼び出せる
- 数値の種類を意識せず、まとめて処理できる
- 共通の処理を親クラスに書いておけば、子クラスで何度も書く必要がない
つまり、再利用性が高まり、コードがスッキリするんですね。
まとめ
| クラス名 | 親クラス | メモ |
|---|---|---|
String | Object | 文字列のクラス。Objectを継承 |
Integer | Number | 整数のラッパークラス。数値系 |
Number | Object | 数値を表す親クラス |
今後の学習のヒント
継承をもっと実感したい方は、こんなことをやってみましょう!
ObjectのメソッドをStringやIntegerで使ってみる- 自分でクラスを作って、
extendsを使ってみる instanceofを使って、継承関係を調べてみる
次は、「継承」と「ポリモーフィズム(多態性)」の関係についても知ると、さらに理解が深まりますよ!
わかりやすい例をもっと知りたい方、どんどん質問してくださいね!