Javaオブジェクト指向プログラミング(3) - クラスの定義のメリット・インスタンス生成方法

プログラミング、サーバー、ネットワーク、IT用語、ハマったときのトラブルシューティングなど様々なIT関連の話題をひたすら書いていく技術ブログです。

2017年8月15日火曜日

Javaオブジェクト指向プログラミング(3) - クラスの定義のメリット・インスタンス生成方法


クラス定義でできるようになること

Javaはクラスを定義することによって、2つのことが可能になります。1つは作成したクラスからインスタンスを生成できるようになることです。二つ目はインスタンスを代入するための変数の型が増える(利用できるようになる)ことです。これをクラス型変数と言います。

Javaでは変数は何かしらの型を持っています。intやStringといった具合です。これらはJavaの標準的な型でいつでも使える型です。その他にクラスから生み出されたインスタンスを代入するするクラス型の変数が使えるようになります。例えば前回の記事で侍クラスを作成しましたが、Samurai型が利用できるようになります。つまり、クラスを定義することによって、Javaで利用可能な型が増えていきます。定義方法はintなどと変わりません。インスタンスは基本的に、クラス型の変数に入れて利用します。


Samurai s;

クラス型変数はなぜ必要か?

クラス型変数が必要な理由はずばりインスタンスを見分けるためです。侍クラスからたくさんの侍のインスタンスを生成したとしましょう。例えば走れという指示を出した時にクラス型変数がないとどの侍に指示しているのかわかりません。つまりクラス型変数があると以下のようにできます。

Samurai s1;
Samurai s2;
s1とs2は同じ侍クラスから生成されたインスタンスが代入されるとしましょう。上記のようにs1とs2で分かれていればs1に対して指示を送ったり、またはs2にだけに対して指示を送ったりすることができます。

インスタンスの生成・フィールドへ値を代入する、メソッドの利用

インスタンスの生成の基本形は以下のかたちです。

クラス名 変数名 = new クラス名();
Samurai s = new Samurai();

生成されたインスタンスのフィールドに値を代入する場合は以下の通り。

変数名.フィールド名 = 値
s.name = "侍マン";

メソッド使い方は以下の通り

変数名.メソッド名()
s.run();

オブジェクト指向は難しい?

オブジェクト指向というと普段生活でまず言うことのない言葉ですし、難しい印象を持たれがちですが、現実世界に置き換えて考えてみるとわかりやすいかもしれません。例えばhumanという人間クラスを作った時に、人間誰もが名前、性別、年齢、身長、体重などを持っており、それらがクラスのフィールドになります。また、歩く、走る、食べる、飲むなどの行動を取ることができます。その行動をメソッドとしてクラスに定義していくのです。クラスで定義していることは実はほとんどが、実生活や普段の行動などに繋がっていることが多いのです。つまりクラスを定義するときは現実世界で起きていることを真似てみると分かりやすいかもしれません。これがオブジェクト指向の考え方です。

◯「Javaオブジェクト指向プログラミング(4) - インスタンスについて覚えておきたいこと」はこちら
◯「Javaオブジェクト指向プログラミング」シリーズの記事一覧はこちら



最近の投稿