abstractという言葉を聞いたことはありますでしょうか?
これは抽象クラスや抽象メソッドといったものを作成する際に使用する修飾子の事です。
修飾子とはpublicやprivate等クラスやメソッドに記載したものがあったと思いますが、これの一種です。
簡単に言うとそのクラスやメソッドがどういった存在かというのを一目でわかるように記載したものです。
abstractはそういった修飾子の一つで、これを記載することで抽象クラス・抽象メソッドを表すことができます。
ではこの抽象クラス・抽象メソッドとはどういったものかについてこれから解説していきます。
抽象クラスとは?
まず抽象クラスですが、これは抽象メソッドを最低一つは持っているクラスの事です。
抽象メソッドについてはまた後程解説しますが、簡単に言うと処理がまだ定義されていないメソッドの事です。
そしてこの抽象クラスはインスタンス化することができません。
基本的にこの抽象クラスを継承した具象クラスの方をインスタンス化することで使用します。
これだけではわからないことも多いと思いますので、もう少し分かりやすく解説します。
皆さんはプログラムと言ったらどういったイメージをしますか?
Javaでしょうか?
Cでしょうか?
Python?でしょうか?
人それぞれイメージする言語は異なるはずです。
このプログラムという大雑把な括りを表しているのが、抽象クラスです。
そしてその下にJavaクラス、Cクラス、Pythonクラスというような具象クラスがあるというイメージです。
ではそんな抽象クラスはどのように表現されるのでしょうか?
そこまで難しいものではなく、下記のようにいつものクラス定義にabstractという文字を記載するだけです。
public abstract class Program{
何らかの処理
}
因みに抽象クラスを継承した抽象クラスを定義することも可能です。
その場合新たに抽象メソッドを作成したり、継承元の抽象クラスに定義した抽象メソッドをオーバーライドすることも可能です。
オーバーライドって何?という方は下記記事で解説していますので、ぜひ読んでみてください。
【Java】オーバーライドについて解説 | エンジニアKISARAGIの備忘録 (kisaragi-it.com)
抽象メソッドとは?
では次に抽象メソッドについて解説していきます。
抽象メソッドは一言で表すなら処理のないメソッドです。
どういったことかというと実際のコードが書きのようになっています。
public abstract void Java();
見ていただいたら分かる通り、処理が何も記載されていません。
これは抽象クラスに「予めこういった処理をそのうちします!よろしく!」といった感じで記載します。
先ほどのプログラムで表すと「処理を繰り返す」や「処理を分岐する」というような抽象メソッドを作成しておき、それぞれのプログラミング言語の具象クラスで具体的な処理方法を記載するというのが具象メソッドのイメージです。
Javaでしたら具象メソッドはfor文やif文などといったイメージです。
まとめ
この記事ではJavaのabstract修飾子について解説してきました。
- 抽象クラスとは?
- 抽象メソッドとは?
抽象クラス、抽象メソッドと聞いて、「何のことだ?」「なんか難しい表現が出てきやがった・・・」といった印象を持たれた方も多いのではないでしょうか?
私も初めて見た時は、「めんどくせー」と思いましたw
しかし一度理解してしまえばそこまで、以降はそれほど悩むものでもないので、今はぐっと我慢してどういったものなのか理解していきましょう。
以上で今回の解説は終了となります。
コメント