1ヶ月でWebデザイン・プログラミングスキルをオーダーメイドのカリキュラムで学べるスクール、それがWebCamp。

子供の想像力を伸ばしアイデアを形にする小学生向けプログラミング教室「プロスタキッズ」

【Java入門】PCソフトの上書き保存で覚える!!メソッドのオーバーライドの仕方

Pocket


今回のテーマは、メソッドのオーバーライドについてです。
一瞬オーバーライドと言われても、初心者にとっては少し分かりにくいものです。
一言で言えば、オーバーライドは、上書き保存です。
上書き保存といえば、PCを使っていればよく聞く言葉です。
ワードやエクセルといったあらゆるソフトに上書き保存の機能がついています。
今回はワードやエクセルの機能面である上書き保存で難しいメソッドのオーバーライドを理解していきましょう。

オーバーライドの前にクラスについて理解する

オーバーライドの説明に行く前に1つ重要な事があります。
それが、クラスについてです。

クラスとはclass クラス名{ }のこと


Javaで言うクラスとは、ものすごく単純で、class クラス名{}と書かれた分が1つのクラスです。
実は、一番最初で書くHelloWorldのプログラムでも無意識にクラスを使っています。
赤枠で囲まれた部分が1つの立派なクラスです。
上記の画像では、HelloWorldクラスと言います。
もし、あなたが上司から○○クラス間違ってるから直してと指摘されたら、その○○クラスのソースを再度確認してみましょう。
勤務先においてもクラスがどうのこうのという会話はよく聞きますので、クラスと言われたらclass クラス名{ }と頭のなかで出てくるようにしておきましょう。

クラスは何個でもかけるためソースの保管もしやすくなる

クラスを持つ特徴として、何個でもかける点が最大のメリットです。
この何個でもかけるということは、システム開発においては、システムごとにクラスを作り、ソースの管理がしやすくするためでもあります。
どうしてそれほどソースの管理が重要かは、変更、訂正時に最小限にするためです。
最小限にすることによって、後々万が一のトラブルがあったときに原因を特定しやすく、修正する時間も大幅に短縮できます。
あなたもこれからは、システムごとにクラスを作る癖をつけておきましょう。

それでは、オーバーライドに進みましょう。

オーバーライドとは上書きすることである

オーバーライドは、英語でOverrideと書き、その意味は上書きを意味します。
例えるなら、ワードで新規作成(名前をつけて保存済み)し、新規作成したワードに文書を書き、上書き保存をします。
この一連の流れが、Javaではオーバーライドと言われるものです。
まずは、オーバーライドは上書き保存であることをしっかり頭に入れておきましょう。

仕様用途はメソッドで使われる

Javaにおけるオーバーライドの使用用途は、メソッドで行われます。
メソッドとは、【Java入門】本の貸し借りで覚える引数と戻り値(return文)のメソッドとは何か?をご覧ください。
オーバーライドは、2つ以上のクラスがあり、どちらのクラスにも同じ名前のメソッドがあることをいいます。
上記の画像を見てみましょう。
1つ目のクラスHumanクラスにmesメソッド、2つ目のHitorimeクラスにも同じmesメソッドがありますが、内容が違いますね。

オーバーライドをするときはクラスが継承される特徴を持つ

オーバーライドにおいては、クラスの継承と呼ばれる特徴を持ちます。
クラスの継承については機会がある時にしましょう。
今の段階では、2つ目のHitorimeクラスの後にextends Humanとあります。
このextends Humanがクラスを継承しています。
メソッドがオーバーライドされる場合は殆どのケースでextends が使われます。
このextendsのおかげで、2つ目のクラスで1つ目のクラスの内容が使えるようになり、上書きできるようになります。
まさしくこれがワードやエクセルで言う上書き保存機能そのものなのです。
それでは実際にこのプログラムをあなたの手で実装してみましょう。

実践!メソッドをオーバーライドさせてみよう!簡単3STEP

STEP.1 Humanクラスとメソッドを作る

まずは、1つ目のクラスHumanクラスを作りそのクラス内にmesメソッドを作ります。
ここまでは簡単ですので、そのまま何も考えずに打ちましょう。

STEP.22つ目のクラスHitorimeクラスを作り、メソッドを作る(メソッド名は1個めのメソッド名と同じ)

次に、2つ目のクラスHitorimeクラスを作りましょう。
この時のポイントとしては、Hitorimeクラスの後にextends Humanとつけましょう。
これをつけることによって、1つ目のHumanクラスの内容をHitorimeクラスでも使えるようにする魔法の呪文のようなものです。
作り終わったら、1つ目と同じmesメソッドを作りますが、Hitorimeクラスに作るmesメソッドは1つ目のmesメソッドとは違う内容にしておきましょう。
最後に、System.out.println();の前に、super.mes()と追加してみましょう。
super.mes()は1つ目のHumanクラスのmesメソッドを呼び出しています。
ここではそれほど気にすることなくそのまま打ち込んでください。

STEP3.メインメソッドでこんにちはよろしくお願いしますと出力させましょう

最後に、メインメソッドに出力させる命令を打ちましょう。
クラスの使い方は、クラス名 xxx = new クラス名();と記載し、xxx.メソッド名();です。
このセットは他でもよく使うのでしっかりと覚えておきましょう。
xxxのところは何でも構いません。
便宜上ここではhitorimeとしています。
今回の場合は、メソッドをオーバーライドさせているので、左辺のクラス名は、1つ目のクラス、右辺のクラス名は2つ目のクラスと少々ややこしいことをしています。
これを踏まえて実行してみましょう。

と出力されていれば成功です。

おわりに

今回は、少し難しいテーマでもあるメソッドのオーバーライドについて挑戦してみました。
オーバーライドは上書きということでしたね。
オーバーライドにはクラスの継承が必要不可欠であり、そうすることによって2つ目のクラスで内容を上書きしています。
今回は、それがよく分かるように2つ目のクラスのメソッドで1つ目のクラスのメソッドを呼び出す処理を追加しています。
このsuperについても、クラスの継承の説明の時に詳しくお伝えします。
ひとまず、Javaにおいてはメソッドの上書きができるそれだけ理解できただけでも十歩以上前進しています。

【おすすめ記事】
人気No.1言語!Javaを学べるプログラミングスクール
一番人気の言語Javaを勉強できる学習サイト8選
Javaの本・参考書の評判

投稿者:プロスタ編集部

  • このエントリーをはてなブックマークに追加
  • follow us in feedly

初心者がプログラミングで挫折しない学習方法を無料動画で公開中。オンラインに特化したプログラミングスクール「TechAcademy(テックアカデミー)」が解説。

この記事が気に入ったら
いいね!しよう

プロスタの最新情報をお届けします

あわせて読みたい

関連記事

ページ上部へ戻る