メソッド、オブジェクト指向、インスタンス、クラス…etc
Javaの勉強をしていると聞きなれない言葉がたくさん出てきますよね。
本記事ではJava で出てくる用語の解説を初学者の目線からしたいと思います。
同じようにプログラミング初心者の方が学ぶ手助けになれば幸いです。
自分が勉強した方法については以下で話しています。
前回記事:7時間でJavaの基礎を学んだ話 ~ プログラミング学習の記録 ~
メソッド
メソッドとは【コンピューターに対して行う行動命令のこと】です。
例えば人間でいうと『歩く』『話す』『~に行く』などの行動を命令するものになります。
プログラムではこのメソッドをもとに処理が実行されていきます。
以下のようなメソッドも作れます。
1000円を渡して、『受け取った1000円で、商品を買う』
といった引数を取るメソッド
「商品を買って命令者に商品を渡す」
といった返り値があるメソッド
オーバーロード
オーバーロードとは
【種類、引数が異なれば同じ名前のメソッドを作成できる仕組み】
のことです。
例えば引数が2つのメソッドを作成した後に、
引数が3つのメソッドを定義することが可能です。
オブジェクト指向
オブジェクト指向とは、
【必要な時に、用意した設計図から『もの』を作り、行動させる、という考え方】
になります。
この考え方でプログラムを作るとわかりやすく、修正しやすいプログラムになります。
例として車紹介プログラムを考えてみましょう。
3台の車の色と種類を入力し、その色と種類を言わせるプログラムです。
車の設計図を用意し、設計図を呼び出して車を作り、車紹介をさせる、
という考え方でプログラムを記述する考え方がオブジェクト指向になります。
特徴をみてみましょう。
そのまま記述した方はプログラム文が縦に長くなっています。
オブジェクト指向ではプログラムが2つに分かれていますが、
一つ一つがコンパクトになっています。
また、車紹介の命令を修正したい場合を考えましょう。
そのまま記述した方は3つの車すべてを修正しなければいけません。
しかし、オブジェクト指向で記述した方は車の設計図の車紹介を修正すれば、
すべての車が修正されます。
このように、オブジェクト指向で記述した方がわかりやすく、修正しやすいです。
プログラムを記述する際に意識するのが大事な考え方となっています。
インスタンス
インスタンスとは、【オブジェクト指向で記述した際に作る『もの』】のことです。
オブジェクト指向で記述した例でいうと、『車1』、『車2』、『車3』がインスタンスになります。
クラス
クラスとは、【インスタンスをつくるための設計図】となります。
先の例だと、車の設計図がそれにあたります。
(正確にはメインプログラムもクラスです。『実行させたいプログラムの設計図』
と考えるとわかりやすいかと思います。)
クラスには情報と行動が定義されます。
車の設計図でいうと、色と種類が情報、車紹介が行動ですね。
これを定義することによって、インスタンスが情報をもち、行動ができるようになります。
インスタンスフィールド、インスタンスメソッド
インスタンスフィールドとは、【インスタンスが持つ情報】のことです。
インスタンスメソッドとは、【インスタンスが持つ行動】のことです。
先の例だと、車の色と種類がインスタンスフィールド、
車紹介がインスタンスメソッドにあたります。
コンストラクタ
コンストラクタとは、
【インストラクタを作成した際に自動で実行されるメソッド】のことです。
引数をもつことができるため、
インストラクタを作成した際にフィールドに値を引数から代入する命令を記述しておけば、
いちいちフィールドを呼び出して値を代入する必要がなくなるので便利です。
クラスフィールド、クラスメソッド
クラスフィールドとは【クラスに属する情報】のことです。
例えば、ある設計図がプログラム上で何回使われたかカウントしたい時に、
クラスにカウント用の情報を持たせておくことができます。
これはインスタンスが持つ情報ではないので、クラスフィールドとして定義します。
同様に【クラスに属する行動】をクラスメソッドと呼びます。
カプセル化
カプセル化とは、
【クラスの外部からフィールド、メソッドに触れないよう制限すること】です。
これによりプログラムの中で簡単に変更してほしくないデータを守ることができます。
ゲッター、セッター
ゲッターとは、
【カプセル化によりクラス外部から触れないフィールドの情報を読み取るメソッド】
のことです。
セッターとは
【カプセル化によりクラス外部から触れないフィールドの情報を変更するメソッド】
のことです。
カプセル化を保ちつつこれらのメソッドを使わないと触れない状態を作れます。
プログラム作成時の不具合確認、修正等に役に立ちます。
継承
継承とは【クラスのフィールド、メソッドを他のクラスに引き継ぐ機能】のことです。
例えば乗用車のクラス、トラックのクラスがあったとしてます。
この2つは共通する部分と異なる部分があるはずです。
- 共通する部分:ハンドル、アクセル、ブレーキ、タイヤ等
- 異なる部分:荷室、座席数等
共通する部分を『車のクラス』としてまとめ、異なる部分だけ変更できるようにすれば、
よりわかりやすく、修正しやすくなりますよね。
Javaではこのようにクラスの情報等を他のクラスに引き継ぐことができます。
スーパークラス、サブクラス
スーパークラスとは、【他のクラスに継承されるクラス】のことです。
サブクラスとは、【他のクラスを継承したクラス】のことです。
上の例でいえば、車のクラスが『スーパークラス』、
乗用車、トラックのクラスが『サブクラス』となります。
オーバーライド
オーバーライドとは、
【スーパークラスのメソッドと同名のメソッドをサブクラスで定義し、
メソッドの内容を変更すること】です。
スーパークラスのメソッドをサブクラスのインスタンスで使うときに使い勝手が悪く、
修正したい時があると思います。
サブクラスでオーバーライドを行うことでメソッドの修正をすることが可能となります。
まとめ
本記事では、Java で出てくる用語の解説を初学者の目線からしていきました。
学んでいてカタカナ言葉が多く目が回るかもしれませんが、
一つ一つ理解していけばきっとマスターできると思っています。
同じようにプログラミング初心者の方が学ぶ手助けになれば幸いです。
コメント