【Java】JSPでタグライブラリを使う(JSTL)
こんにちは。エンジニアの新田です!ここでは、システムエンジニアとして働いている私が、システム開発手法や開発言語について紹介していこうと思います。今回は、JSPの標準タグライブラリ「JSTL」について紹介します。Javaについて勉強している方、Webアプリケーションを構築したいと思っている方の参考になれば幸いです!関連記事リンク: 【Java】JSPの基本的な構文/【Java】JSPのアクションタグ
Workteria(ワークテリア)では難易度の高いものから低いものまで、スキルや経験に合わせた案件を多数揃えています。会員登録は無料ですので、ぜひ会員登録してご希望の案件を探してみてください!
フリーランス/正社員のエンジニアとして活躍するには、ご自身のスキルや経験に合わせた仕事を選ぶことが大切です。ご希望の案件がみつからない場合はお気軽にお問い合わせください!ユーザ満足度の高いキャリアコンサルタントが在籍していますので、希望条件や悩み事などなんでもご相談ください。ご希望にピッタリの案件をご紹介させていただきます。
Javaにおけるオーバーライドとは、継承した親クラスの同じ名前のメソッドの内容を子クラスにて再定義する(書き換える)ことです。オーバーライドでは、メソッドの名前、引数の数、引数の型、引数の順番、戻り値の型が全て同じでなければなりません。
似たような名前の機能に「オーバーロード」がありますが、こちらは同一のクラスに、同一のメソッド名で引数の数、引数の型、引数の順番の異なるメソッドを複数定義する機能になります。
ちなみに、Javaの継承とは、親クラスのフィールドやメソッドなどのメンバを全て引き継いだ子クラスを定義することを指します。
Javaには抽象クラスと具象クラスというクラスがあります。抽象クラスとは、処理内容が確定していないクラスのことです。クラスを定義する際、修飾子として「abstract」をつけることで、抽象クラスであることを宣言します。
抽象クラスとして定義されている親クラスを継承して、サブクラスの具象クラスを定義する場合、抽象メソッドはオーバーライドを強制されます。オーバーライドが強制されるということは、オーバーライドによって具体的な処理を実装する必要があるということです。
メソッドの定義のされ方によっては、オーバーライドができない場合があります。ここでは、Javaでオーバーライドができない条件を2つ紹介します。いずれもメソッドにつけられた修飾子がポイントとなります。そこをチェックしましょう。
Javaでオーバーライドができない条件の1つ目は、オーバーライド元のメソッドに、「final」修飾子がついている場合です。
メソッドに「final」がついている場合、オーバーライド禁止を意味しています。継承先でメソッドの内容を変更させたくない場合は、修飾子に「final」をつけると良いでしょう。
Javaでオーバーライドができない条件の2つ目は、「static」修飾子のついたクラスメソッドの場合です。
staticメソッドであるクラスメソッドはオーバーライドできません。オーバーライドが可能なのは、非staticメソッドであるインスタンスメソッドのみとなります。
Javaでオーバーライドを使うためには、守らなければならないいくつかのルールがあります。ここでは、Javaでオーバーライドする際の代表的なルールを3つ簡単に紹介していきます。
オーバーライドをするメソッドの上に「@override」を記述します。これはアノテーションと呼ばれ、このメソッドはオーバーライドしたメソッドであるという目印です。
この「@override」をつけることで、自分以外の人がソースを見た際にオーバーライドしたメソッドであることが一目でわかります。
また、このアノテーションが記述されていた場合、親クラスに同じ名前のメソッドがなければ、コンパイラがエラーメッセージを出してくれます。
このアノテーションは記述されていなくても問題ありません。しかし、上記のようなメリットがあるため、記述することをおすすめします。
子クラスの中で、親クラスのメソッドをそのまま使いたいという場合もあるのではないでしょうか。そのようなときは、「super.メソッド」と記述することで、親クラスのメソッドを呼び出して使うことができます。
メソッドだけでなく、親クラスの変数についても、「super.」をつけることで参照が可能です。親クラスでなく、子クラスのメソッドを使うことを明示的に示す場合は、「this.メソッド」といった記述をします。但し「this.」は省略可能です。
親クラスを継承した子クラスは、親クラスを型として変数を定義した場合、キャスト(型変換)を必要とせず、インスタンスとして代入することが可能です。これは、子クラスが親クラスのメンバを全て内包しているためです。
親クラスに子クラスのインスタンスを代入すると、オーバーライドをしている場合、実行されるメソッドは変数の型(親クラス)ではなく、インスタンスの型(子クラス)のメソッドになります。
Javaでオーバーライドする際に注意しなければならないことがあります。ここでは「「throws」で例外クラスを指定する場合について」と「「private」修飾子の指定について」それぞれ注意する点を紹介していきます。
「throws」で例外クラスを指定する場合の注意点は以下の通りです。親クラスにて指定されているthrows節以外の例外を、子クラスのメソッドに指定することはできません。
但し、親クラスで指定されている例外をさらに限定するような例外は、子クラスでも指定することができます。
非チェック例外の例外クラス型(RuntimeExceptionおよびRuntimeExceptionのサブクラス)の場合は、親クラスで指定されている例外クラス型に関係なく、子クラスで指定が可能です。
「private」修飾子の指定についての注意点は以下の通りです。親クラスのメソッドに指定されているアクセス修飾子よりも厳しい制限を持つアクセス修飾子を子クラスのメソッドに指定することはできません。
具体的に説明すると、親クラスのメソッドに「protected」が指定されていた場合、子クラスのメソッドに「private」を指定することはできないということです。
Javaでオーバーライドを活用する利点は、「再利用のしやすさ」と「保守のしやすさ」です。親クラスを継承していれば、子クラスでオーバーライドをしたとしても、親クラスのメソッドはそのまま使用できます。
そのため、子クラスで同じようなメソッドを再度作成しないで済みます。その再利用のしやすさがオーバーライドを活用する利点の1つです。
オーバーライドをしていると、親クラスや子クラスの処理を修正したいとなった場合、それぞれのクラスの必要な一部分だけを修正するだけで済みます。修正箇所が少ないというのは、保守がしやすいと言えるでしょう。
この記事では、Javaにおけるオーバーライドの基本と利用方法を紹介してきました。オーバーライドが利用できるようになると、利用しない場合と比較して、効率的にJavaのコーディングができるようになります。
似た機能のオーバーロードとの違いなども理解しつつ、Javaでの開発の参考にしてみてください。
【著者】
東京ITカレッジで講師をしています。
Java 大好き、どちらかというと Web アプリケーションよりもクライアントアプリケーションを好みます。でも、コンテナ化は好きです。そのような方はぜひ、Workteriaサイトをご利用ください!
定期的にご本人に合う高額案件を紹介
リモートワークなど自由な働き方ができる案件多数
専属エージェントが契約や請求をトータルサポート
こんにちは。エンジニアの新田です!ここでは、システムエンジニアとして働いている私が、システム開発手法や開発言語について紹介していこうと思います。今回は、JSPの標準タグライブラリ「JSTL」について紹介します。Javaについて勉強している方、Webアプリケーションを構築したいと思っている方の参考になれば幸いです!関連記事リンク: 【Java】JSPの基本的な構文/【Java】JSPのアクションタグ
こんにちは。新人エンジニアのサトウです。システムエンジニアとして駆け出したばかりですが、初心者なりの視点でわかりやすい記事を心がけていますので参考になればうれしいです。プログラム初心者✅にも、プログラムに興味がある人✨も、短い時間で簡単にできますのでぜひこの記事を読んで試してみてください!そもそもStringとは何?『 String 』... Java言語において文字列のデータ型を指します。基本デ
こんにちは。新人エンジニアのサトウです。システムエンジニアとして駆け出したばかりですが、初心者なりの視点でわかりやすい記事を心がけていますので参考になればうれしいです。プログラム初心者✅にも、プログラムに興味がある人✨も、短い時間で簡単にできますのでぜひこの記事を読んで試してみてください!Stringクラスformatメソッドの文字列整形【java.utilパッケージ】Formatterクラスfo
こんにちは。新人エンジニアのサトウです。システムエンジニアとして駆け出したばかりですが、初心者なりの視点でわかりやすい記事を心がけていますので参考になればうれしいです。プログラム初心者にも✅、プログラムに興味がある人✨も、短い時間で簡単にできますのでぜひこの記事を読んで試してみてください!文字列を扱う3つのクラス【java.langパッケージ】java.langパッケージの文字列を扱うクラスにはS
こんにちは。新人エンジニアのサトウです。システムエンジニアとして駆け出したばかりですが、初心者なりの視点でわかりやすい記事を心がけていますので参考になればうれしいです。プログラム初心者✅にも、プログラムに興味がある人✨も、短い時間で簡単にできますのでぜひこの記事を読んで試してみてください!プリミティブ型と参照型プログラム開発では型を持った変数を使ってデータのやり取りをしますが、データ型によって仕様